我这里有个JAVA WEB程序,部署到TOMCAT里。其中里面有2个操作(功能),都涉及到多线程的使用。当其中一个操作调用notifyAll()方法应该也会唤醒任外一个操作的线程等待吧?如果我想讲他们分开,就是操作A调用notifyAll()方法时只唤醒操作A里的线程等待,那该如何设计?代码该怎么写?请高手赐教!

解决方案 »

  1.   

    每个Thread定义成单独的类,notify的时候就不会相互影响了,比如ThreadA和ThreadB,然后单独调用notify
      

  2.   

    顶2楼,notifyAll()只唤醒当前对象中的其他线程
      

  3.   

    大体代码如下public synchronized A() {
    while(某个条件){
                try {
    this.wait();
        } catch (InterruptedException e) {
    e.printStackTrace();
        }

        this.notifyAll();//唤醒B操作
           }
    }

    public synchronized B() {
    while(条件) {
    try {
    this.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    this.notifyAll();//唤醒A
    }