创建一个和尚类

public class Basket {private int count = 100 ;//和尚数量 ==没吃馒头的和尚数量private int numMonks = 30 ;public synchronized int getBread(Monk monk){//和尚第一次吃if(monk.count == 0){int temp = count ;count -- ;numMonks -- ;return temp ;}//和尚还可以吃的情况else if(monk.count < Monk.MAX){//判断是否有多余的馒头if(count > numMonks){int temp = count ;count -- ;return temp ;} else{return -1 ; }}return -1 ;}}

创建一个馒头类继承Thread类创建多线程

public class Monk extends Thread{private String monkName ;private Basket basket ;//最少一个馒头public static int MIN = 1 ;//最多4个馒头public static int MAX = 4 ;//吃的馒头数public int count ;public Monk(Basket basket , String monkName){this.basket = basket ;this.monkName = monkName ;  }public void run() {while(true){int no = basket.getBread(this);if(no ==-1){break ;}else{count ++ ;System.out.println(monkName + "吃了编号为[" + no + "]的馒头");    } }System.out.println(monkName + "共吃了【" + count + "】馒头"); } }

创建一个测试类

public class Test {public static void main(String[] args) {// TODO Auto-generated method stubBasket p=new Basket();for(int i=0;i<30;i++){new Monk(p,"和尚" + (i+1)+":\t").start();}}
}

Java多线程同步问题(和尚吃馒头问题)相关推荐

  1. Java 多线程实现和尚吃馒头的问题

    和尚吃馒头问题 30和尚,100个馒头,每个和尚最多吃4个馒头,最少吃1个馒头,一次只能吃1个馒头. 满足上述条件,尽快吃光馒头. 注意 合适没吃一个馒头之后要 yield(),不然他会连续吃满4个馒 ...

  2. 多线程案例----严格单例模式----和尚吃馒头问题

    在项目中,经常用到一种设计模式----单例模式,下面举一个小案例,说明线程安全的单例模式在多线程中的应用,以供学习参考: 和尚吃馒头: 100个馒头,30个和尚,每个和尚最少吃一个馒头,最多不超过4个 ...

  3. 多线程---和尚吃馒头问题

    在项目中,经常用到一种设计模式----单例模式,下面举一个小案例,说明线程安全的单例模式在多线程中的应用,以供学习参考: 和尚吃馒头: 100个馒头,30个和尚,每个和尚最少吃一个馒头,最多不超过4个 ...

  4. 【代码练习4】利用多线程处理和尚吃馒头问题

    和尚吃馒头 30个和尚,100个馒头,每个和尚至少吃一个馒头,最多不过4个馒头. 满足上述条件下,尽快将馒头吃完. 思路:开启多线程,以最快的速度抢占馒头,首先抢到4个馒头的线程就停止掉:当剩余的馒头 ...

  5. java 什么是线程同步,java多线程同步集合是什么?并发集合是什么?

    java中关于集合的内容也是十分丰富的,而且相关的知识点也是十分多的.多线程集合所涵盖的范围是十分广阔的.今天就来为大家介绍一下,java多线程同步集合是什么以及并发集合是什么?一起来看看吧. 首先我 ...

  6. Java多线程同步机制

    一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁): 如果这个时候同步对象的锁被其他线程拿走了,他(这个 ...

  7. java多线程同步与死锁_浅析Java多线程中的同步和死锁

    Value Engineering 1基于Java的多线程 多线程是实现并发机制的一种有效手段,它允许编程语言在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间相互独立,且与进程一样拥有独立 ...

  8. Android 价值千万java多线程同步 lt;五CountDownLatch(计数器)和Semaphore(信号量)

    1).Android 价值千万   java线程专题:Wait&notify&join&Yield http://blog.csdn.net/whb20081815/artic ...

  9. Java多线程同步之使用Lock实现车辆入库出库管理

    Java多线程同步之使用Lock实现车辆入库出库管理 个人笔记: 实现:车库有n个车位,现在有m辆车试图进入车库,每辆车停留随机秒数后离开 首先创建一个Garage车库类,Garage有空间属性和最大 ...

最新文章

  1. 比好莱坞市场大6倍—— 体育因数据分析而不同
  2. VO,BO,PO,DO,DTO的区别
  3. docker安装Oracle 11g
  4. 无废话WPF系列19:MVVM简单介绍
  5. 上海理工大学:用数字技术打响智慧抗疫信息战
  6. 阿里云oss完成简单上传
  7. java 用mysql游标_MySQL游标
  8. 服务器宽带估算及选择
  9. 2010年度 中国WEB应用防火墙厂家和产品大全
  10. VB计算汉字笔画数代码
  11. 无法识别服务器硬件信息,请教:无法获取服务器硬件信息
  12. 微信小程序超过屏幕高度后显示底部图标
  13. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个复古手机键盘(带声音)的动画效果~~适合初学者~超简单~
  14. 团队管理那点破事!OKR绩效、核心人才、面试、技术分享、研发流程....
  15. 【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)
  16. 计算机网络电视如何配置,关于电脑控制网络电视的方法
  17. 【科创人】瑞云创始人汪忠田:售后服务SaaS市场拓荒者
  18. Day8—进程,线程,协程
  19. REDIS-雪崩、击穿、穿透
  20. 《矿山经济学》在线平时作业2

热门文章

  1. React脚手架应用(创建脚手架、代理配置、ajax相关、组件通信)(四)
  2. android实验二之体重标准计算器
  3. Linux(centos)系统主机使用教程详解
  4. java高斯分布_高斯分布的生成
  5. 旅游卡景区购票小程序开发定制
  6. 气象数据的各种插值问题 | 小骏不抬杠
  7. 科目6401010101 要求一个成本会计分配 的解决思路
  8. 疫情相关的出行提示都在这了!百度地图上线“疫情管控消息速报”功能
  9. php设计鸡兔同笼问题解法,数量关系解题技巧:三种方法巧解鸡兔同笼问题
  10. kali下扫描CMS web漏洞小工具web-sorrow