60个桃和40个梨,给100个人随机分。
要求输出这样的格式
第1个人,得到第1个梨.
第2个人,得到第1个桃
。。。。。
第50人,得到第40个梨
。。。
第100个人,得到第60个桃
我的思路是这样的建立两个线程,桃和梨的。但是我的问题在于输出的时候怎么把人加进来??在创建一个人的线程么?再把桃和梨的join进来。。但是这样输出就乱了啊。
有木有前辈指点一下思路
加个锁,将人锁住就就可。
public class test {
public static void main(String[] args){
int peachNum=1,pearNum=1;
boolean flag=true;
for(int i=1;i<=100;i++){
if(flag){
if(pearNum<=40){
System.out.println("第"+i+"个人,得到第"+pearNum+"个梨");
pearNum++;
}else{
flag=!flag;
}
}
if(!flag){
if(peachNum<=60){
System.out.println("第"+i+"个人,得到第"+peachNum+"个桃");
peachNum++;
}
}
flag=!flag;
}
}
} 随机分是什么鬼? 这个是一个桃子一个梨子分的
第1个人,得到第1个梨
第2个人,得到第1个桃
第3个人,得到第2个梨
第4个人,得到第2个桃
第5个人,得到第3个梨
第6个人,得到第3个桃
第7个人,得到第4个梨
第8个人,得到第4个桃
第9个人,得到第5个梨
第10个人,得到第5个桃
第11个人,得到第6个梨
第12个人,得到第6个桃
第13个人,得到第7个梨
第14个人,得到第7个桃
第15个人,得到第8个梨
第16个人,得到第8个桃
第17个人,得到第9个梨
第18个人,得到第9个桃
第19个人,得到第10个梨
第20个人,得到第10个桃
第21个人,得到第11个梨
第22个人,得到第11个桃
第23个人,得到第12个梨
一个梨的线程一个桃的线程 加上同步锁
然后把人设为公共变量 是50
然后run 这两个线程吧 我认为
int count0 =0;
int count1 = 0;
for(int i = 0;i<100;i++){
//随机产生0 和1 两个数字,0代表桃子,1代表梨
int rand = Math.random()*2
//如果是桃子
if(rand == 0){
//判断桃子是否超过60
if(count0>60){
count1++;
//输出第i个人得到第count1个梨;
coutionu;
}else{
count0++;
//输出第i个人得到第count0个桃子
coutionu;
}
}else{
//判断梨过40
if(count1>40){
count0++;
//输出第i个人得到第count0个桃子;
coutionu;
}else{
count1++;
//输出第i个人得到第count1个梨
coutionu;
}
}
}
不需要创建线程吧,创建线程使这个问题变得复杂化,不创建依然可以分桃。不信看我楼上