有一个和尚负责做馒头,做好30个其它三个和尚就可以吃馒头, *当馒头吃完了,第一个和尚就再做30个馒头 生产消费
来源:互联网 发布:java错误调试 编辑:程序博客网 时间:2024/04/28 12:46
package ;import java.util.ArrayList;import java.util.List;/** * Created by dell on 2017/5/4. * 有一个和尚负责做馒头,做好30个其它三个和尚就可以吃馒头, * 当馒头吃完了,第一个和尚就再做30个馒头 生产消费 */public class Test { public static List<String> datas=new ArrayList<>(); public static void main(String[] args) { new HuFu().start(); new ChiHuo("白眉和尚").start(); new ChiHuo("酒鼻子和尚").start(); new ChiHuo("花和尚").start(); }}class HuFu extends Thread{ @Override public void run() { while(true) { //做馒头和喊醒并休息 synchronized ("b") { for (int i = 1; i <= 30; i++) { Test.datas.add("第" + i + "个馒头"); System.out.println("已做好第" + i + "个馒头"); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("馒头已做够,开始叫醒吃货们"); "b".notifyAll(); } //XXX.notifyAll() synchronized ("a"){ try { "a".wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } }}class ChiHuo extends Thread{ private String name; public ChiHuo(String name) { this.name = name; } @Override public void run() { //吃没了就唤醒火夫并休息 while(true) { String s=null; synchronized ("b") { if(Test.datas.size()==0){ synchronized ("a"){ System.out.println(name+"发现没有馒头了,去叫醒火夫"); "a".notify(); } try { "b".wait(); } catch (InterruptedException e) { e.printStackTrace(); } }else { s = Test.datas.remove(0); System.out.println(name + "吃掉了" + s); } } try { Thread.sleep((long) (Math.random() * 2000 + 1)); } catch (InterruptedException e) { e.printStackTrace(); } } }}
0 0
- 有一个和尚负责做馒头,做好30个其它三个和尚就可以吃馒头, *当馒头吃完了,第一个和尚就再做30个馒头 生产消费
- 三个和尚吃馒头
- 多线程---和尚吃馒头问题
- 和尚和馒头的算法
- 100个和尚分100个馒头的几种算法(C语言,Js,Vbscript)
- 多线程案例----严格单例模式----和尚吃馒头问题
- 【代码练习4】利用多线程处理和尚吃馒头问题
- 生产消费拿馒头
- 线程--工人吃馒头、蜜蜂与熊生产消费
- 5个馒头与100单生意
- 有馒头吃,就是幸福的
- 最近穷疯了只好吃馒头
- 最近穷疯了,只好吃馒头
- [小传]任正非:高中三年的理想只是吃个白面馒头 [zz.IS2120]
- 中国文化悲哀之一个馒头引发的强奸案
- 馒头渣!
- 馒头记
- 馒头作业
- 【easyui】datagrid横向滚动条自动滚动功能
- 204. Count Primes(C++)
- 0156 java中的WeakReference
- 字符串格式化format符号含义+转义字符含义
- 算法导论——26.2 FordFulkerson方法,Edmonds-Karp算法java实现
- 有一个和尚负责做馒头,做好30个其它三个和尚就可以吃馒头, *当馒头吃完了,第一个和尚就再做30个馒头 生产消费
- 1026. 程序运行时间(15)
- 阻止事件冒泡,嵌套元素事件加载互不影响
- 获得WebRoot的物理路径
- Java单例模式的最佳实现
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 深入理解java垃圾回收机制
- 补c++第五次实验
- 实现caffe Mnist的程序代码