提问者:小点点

我的通知有什么问题?[重复]


创造斐波那契系列

    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();
        }

输出中有许多IllegalMonorState异常。


共1个答案

匿名用户

对象#等待对象#通知所有应该从同步块调用。