搜索
写经验 领红包
 > 运动

java生产者和消费者(生产者消费者问题多线程并发程序设计)

导语:java并发编程-生产者和消费者wait和notify

下面我们来看一个生产者消费者问题,业务场景是:有一个饭店,饭店有一个厨师、一个服务员,服务员必须等待厨师准备好食物。

厨师做好膳食后,他会通知服务员,之后服务员进行上菜,然后继续返回等待。厨师表示生产者、服务员表示消费者。这两个线程必须协同工作。我们设置食物上限,然后终止程序。我们看下面的代码:

输出结果:

程序分析:

1、程序比较简单,厨师发现食物还有,就wait(),然后通知服务员,服务器发现没有食物了,就wait(),然后通知厨师

2、当食物做了9份后,程序退出,但是不是立即退出,还是会打印"上菜"。

3、使用NotifyAll() 好处是程序可以模拟多个厨师和服务员,然后进行通知

4、shutDownNow()会向所有的ExecutorService发送interrupt()

本文内容由小姿整理编辑!