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