经典线程工人吃馒头

package com.cai.Thread.demo;
/**
 * 30个工人,每个工人最多吃3个
 * @author caizl
 *
 */
public class ChiManTou {
public static void main(String[] args) {
Basket basket = new Basket();
for(int i=0;i<30;i++){
Worker worker=new Worker("name"+i, basket);
worker.start();
}
}



}
class Basket{
//定义一个馒头总数
private  int ManTouTotal=80;
public  synchronized int getCount(){
int tem = ManTouTotal;
ManTouTotal--;
return tem > 0 ? ManTouTotal : 0;
}

}
class Worker extends Thread{
//定义一个工人最多吃多少棉头
private static int Max = 3;
//定义一个工人吃的馒头数
private int manTou;
//定义工人的名字字段
private String workName;
//定义一个装馒头的容器
private Basket basket;
//定义构造函数
public Worker(String workName,Basket basket){
this.workName=workName;
this.basket=basket;
}
//线程任务
@Override
public void run() {
while(true){
if(manTou >= Max){
return ;
}
//获取馒头
int num = basket.getCount();
if(num <=0){
return ;
}
//如果还有馒头那么记录工人吃馒头数
manTou = manTou+1;
System.out.println("工人"+workName+"吃了第几个馒头"+manTou);
}
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值