线程的通信
三个方法:
wait(), 一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器
notify(), 一旦执行此方法,就会唤醒被wait的一个线程,如果有多个线程wait,就唤醒优先级高的
notifyAll(), 一旦执行此方法,就会唤醒所有被wait的线程
说明:这三个方法必须使用在同步块或同步方法中,这三个方法的调用者必须是同步代码块或同步方法中的同步监视器,这三个方法是定义在Object类中的。
sleep和wait()方法的异同点:
相同点:一旦执行都可以使得当前线程进入阻塞状态
不同点:
声明位置不同,sleep声明在Thread类中是静态的,wait声明在Object类中
使用要求不同,sleep可以在任何场景下使用,wait只能在同步代码块或同步方法中使用
如果都在同步代码块或同步方法中使用:sleep不释放锁,wait释放锁