Object提供了三个方法wait(), notify(), notifyAll()在线程之间进行通信,以此来解决线程间执行顺序等问题。
wait():释放当前线程的同步监视控制器,并让当前线程进入阻塞状态,直到别的线程发出notify将该线程唤醒。
notify():唤醒在等待控制监视器的其中一个线程(随机)。只有当前线程释放了同步监视器锁(调用wait)之后,被唤醒的线程才有机会执行。
notifyAll():与上面notify的区别是同时唤醒多个等待线程。
这里补一张思想草图:

定义一个仓库类、生产者类、消费者类、定义一个测试类来实现线程通信
仓库类
消费者类
生产者类
测试类