三个方法:
wait():使当前线程进入阻塞状态,并释放同步监视器。
notify():唤醒被wait的线程。如果有多个非程被wait,会唤醒优先级最高的那个线程(唤醒一个)。
notifyAll():唤醒所有被wait的线程
注意:
1、wait()、notify()、notifyAll()必须使用在同步代码块或方法中。
2、调用者必须是同步代码块或方法的同步监视器。
3、三个方法定义在object类中。
sleep()和wait()的异同:
同:都可以使当前线程进入阻塞状态。
不同: 1、声明的位置不同:Thread类中声明sleep(),Object类中声明wait()。
2、调用的范围不同:sleep()可以在任何场景下调用,wait()必须使用在同步代码块或方法中。
3.如果都使用在同步代码块或方法中:sleep()不会释放同步监视器(锁),wait()方法会释放。