对象的notify()和notifyAll()区别

wait()会让线程挂起,直到通知到它继续执行!挂起的线程会存放到等待队列中,按照wait的先后顺序存放。

notify()通知等待队列中的第一个线程,notifyAll()通知的是等待队列中的所有线程

举例:

class Lock{
    public synchronized  void notifyOne(){
        this.notify();
    }

    public synchronized  void notifyEveryOne(){
        this.notifyAll();
    }
}


挂起线程例子:

class Task implements Runnable
{  
     private Lock lock;

     public Task(Lock lock){
           this.lock = lock;
     }

     public void run(){
           synchronized(lock){
                 lock.wait();
           }
     }

}


 

你可能感兴趣的:(Java,多线程)