Java线程等待可以通过使用wait()
和notify()
方法来优化代码执行。这可以帮助避免线程资源的浪费,提高程序的效率。
在需要等待的地方,使用wait()
方法让线程进入等待状态。当条件满足时,通过调用notify()
方法来唤醒等待的线程继续执行。
下面是一个简单的示例代码:
public class WaitNotifyExample {
private final Object lock = new Object();
private boolean condition = false;
public void waitForCondition() {
synchronized (lock) {
while (!condition) {
try {
lock.wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
// 执行等待之后的操作
System.out.println("Condition is true, continue execution");
}
public void setConditionTrue() {
synchronized (lock) {
condition = true;
lock.notify();
}
}
public static void main(String[] args) {
WaitNotifyExample example = new WaitNotifyExample();
Thread thread1 = new Thread(() -> {
example.waitForCondition();
});
Thread thread2 = new Thread(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
example.setConditionTrue();
});
thread1.start();
thread2.start();
}
}
在这个例子中,waitForCondition()
方法会让线程进入等待状态,直到condition
条件为true时才会继续执行。setConditionTrue()
方法会设置条件为true,并调用notify()
方法唤醒等待的线程。这样可以避免线程一直占用资源等待条件满足的情况发生,提高程序的效率。