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);
}
}
}
/**
* 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);
}
}
}