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()
方法唤醒等待的线程。这样可以避免线程一直占用资源等待条件满足的情况发生,提高程序的效率。