> 运动
java生产者和消费者(生产者消费者问题多线程并发程序设计)
导语:java并发编程-生产者和消费者wait和notify
下面我们来看一个生产者消费者问题,业务场景是:有一个饭店,饭店有一个厨师、一个服务员,服务员必须等待厨师准备好食物。
厨师做好膳食后,他会通知服务员,之后服务员进行上菜,然后继续返回等待。厨师表示生产者、服务员表示消费者。这两个线程必须协同工作。我们设置食物上限,然后终止程序。我们看下面的代码:
输出结果:
程序分析:
1、程序比较简单,厨师发现食物还有,就wait(),然后通知服务员,服务器发现没有食物了,就wait(),然后通知厨师
2、当食物做了9份后,程序退出,但是不是立即退出,还是会打印"上菜"。
3、使用NotifyAll() 好处是程序可以模拟多个厨师和服务员,然后进行通知
4、shutDownNow()会向所有的ExecutorService发送interrupt()
本文内容由小姿整理编辑!