java notify()不是只能唤醒单个线程么,为什么我程序的notify()能唤醒3个
java线程
程序是这样的
/* 第一个类*/
public class ThreadB extends Thread{
int total;
public void run(){
synchronized(this){
for(int i=0;i<101;i++){
total+=i;
}
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
notify();
}
}
public int getTotal(){
return this.total;
}
}
/* 第二个类*/
public class ReaderResult extends Thread{
ThreadB c;
public ReaderResult(ThreadB c){
this.c=c;
}
public void run(){
synchronized (c) {
try{
System.out.println(Thread.currentThread()+"等待计算结果。。。。");
c.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(Thread.currentThread()+"计算结果为:"+c.getTotal());
}
}
public static void main(String[] args) {
ThreadB calculator = new ThreadB();
ReaderResult reader1=new ReaderResult(calculator);
ReaderResult reader2=new ReaderResult(calculator);
ReaderResult reader3=new ReaderResult(calculator);
reader1.start();
reader2.start();
reader3.start();
calculator.start();
}
}
输出结果大多数都
Thread[Thread-1,5,main]等待计算结果。。。。
Thread[Thread-3,5,main]等待计算结果。。。。
Thread[Thread-2,5,main]等待计算结果。。。。
Thread[Thread-1,5,main]计算结果为:5050
Thread[Thread-2,5,main]计算结果为:5050
Thread[Thread-3,5,main]计算结果为:5050
理论上不是只能唤醒一个吗?
|
|