package jTest; public class ThreadTestWait { public static void main(String[] args) { // 使用 SharedResource resource = new SharedResource(); new Producer(resource).start(); new Consumer(resource).start(); } } class SharedResource { private final Object lock = new Object(); private boolean ready = false; public void produce() throws InterruptedException { synchronized (lock) { while (ready) { lock.wait(); // 等待直到消费者消费 } // 生产资源 ready = true; lock.notifyAll(); // 通知所有等待的线程 } } public void consume() throws InterruptedException { synchronized (lock) { while (!ready) { lock.wait(); // 等待直到生产者生产 } // 消费资源 ready = false; lock.notifyAll(); // 通知所有等待的线程 } } } class Producer extends Thread { private final SharedResource resource; public Producer(SharedResource resource) { this.resource = resource; } public void run() { try { while (true) { resource.produce(); Thread.sleep(1000); // 模拟生产时间 } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } class Consumer extends Thread { private final SharedResource resource; public Consumer(SharedResource resource) { this.resource = resource; } public void run() { try { while (true) { resource.consume(); Thread.sleep(1000); // 模拟消费时间 } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }