天天看点

生产者与消费者之间的线程通信案例

Object提供了三个方法wait(), notify(), notifyAll()在线程之间进行通信,以此来解决线程间执行顺序等问题。

wait():释放当前线程的同步监视控制器,并让当前线程进入阻塞状态,直到别的线程发出notify将该线程唤醒。

notify():唤醒在等待控制监视器的其中一个线程(随机)。只有当前线程释放了同步监视器锁(调用wait)之后,被唤醒的线程才有机会执行。

notifyAll():与上面notify的区别是同时唤醒多个等待线程。

这里补一张思想草图:

生产者与消费者之间的线程通信案例

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

仓库类

消费者类

生产者类

测试类