业务要求 :12个银行窗口,140个等待的顾客,输入每个顾客相应的等待时间后,输出每个窗口相应的服务的顾客号。
我先是设了3个线程,表示三个窗口,一开始3个窗口都可以顺利运行。但是后来不知道怎么只有一个线程运行了,看了代码N遍也不知道哪里错了,求指教
public class mianThread extends Thread{
private static int count=0;//这是静态变量
private static boolean flag = true; //信号量,用于线程间的互斥
//这个run()方法被synchronized所控制
int data[]={3,2,3,5,2,6,3,3,2};//表示每个顾客相应的服务时间
public synchronized void run(){
while(count<=8){
if (!flag)
try{
wait();
}catch (InterruptedException e) { }
flag = false;
int time=data[count];
count = count+1;
System.out.println("第"+getName()+"个窗口处理了第"+count+"个顾客,花费"+time+"分钟");
flag = true;
notifyAll();
try{
sleep(time);//暂停相应的服务时间
}catch (InterruptedException e) { }
}
}
public mianThread(String name){
super(name);
}
}
下面是主函数
public class main {
/**
* @param args
*/
public static void main(String[] args) {
mianThread m1=new mianThread("first Thread");
mianThread m2=new mianThread("second Thread");
mianThread m3=new mianThread("Third Thread");
m1.start();
m2.start();
m3.start();
}
}
只有first thread这个进程运行 这是什么情况。。。。。。。:Q |