标题: 线程同步问题 [打印本页] 作者: 仵先进 时间: 2012-2-22 23:41 标题: 线程同步问题 业务要求 :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);
}