在Java中,wait()和sleep()方法都可以用于线程的控制和同步。
wait()方法是Object类的方法,它会使当前线程进入等待状态,直到其他线程调用该对象的notify()或notifyAll()方法唤醒它。wait()方法需要在synchronized块或方法中使用,因为它要求线程释放对象的锁。
示例代码:
synchronized (obj) {
while (condition) {
try {
obj.wait(); // 当前线程进入等待状态
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 执行其他逻辑
obj.notify(); // 唤醒等待的线程
}
sleep()方法是Thread类的静态方法,它会使当前线程进入休眠状态,暂停执行一段时间(以毫秒为单位),然后重新开始执行。sleep()方法不会释放对象的锁,所以可以在任何地方使用。
示例代码:
try {
Thread.sleep(1000); // 当前线程休眠1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
需要注意的是,wait()和sleep()方法都会抛出InterruptedException异常,所以需要在调用它们的地方进行异常处理。