创建斐波那契数列
public void run(){
int a=0,b=1,c;
while(a<=10000){
prim chk= new prim(a);
chk.start();
synchronized (chk) {
try {
sleep(200);
chk.wait();
} catch (InterruptedException e) {
return;
}
}
c=a+b;
a=b;
b=c;
}
}
为了检查素数,我创建了另一个线程(仅供练习)
public void run(){
synchronized (this) {
int fl=1;
if(a==1||a==2)
fl=0;
else
for(int i=2;i<=Math.sqrt(a);i++)
if(a%i==0)
fl=0;
if(fl==0)
System.out.println(a);
}
notifyAll();
}
有很多IllegalMonitorState
输出中的异常。
最佳答案
Object#wait
、Object#notifyAll
应从 synchronized
block 调用。
关于java - 我的notifyAll() 有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936450/