极客时间Java项目实战营郑天民【有课apro660】

Sunoi
创建于2023-02-24
阅读 0
收藏TA

需扫码在手机上打开
文章后点击更新提醒

线程的通信


三个方法:

wait(), 一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器

notify(), 一旦执行此方法,就会唤醒被wait的一个线程,如果有多个线程wait,就唤醒优先级高的

notifyAll(), 一旦执行此方法,就会唤醒所有被wait的线程


说明:这三个方法必须使用在同步块或同步方法中,这三个方法的调用者必须是同步代码块或同步方法中的同步监视器,这三个方法是定义在Object类中的。

sleep和wait()方法的异同点:


相同点:一旦执行都可以使得当前线程进入阻塞状态

不同点:


声明位置不同,sleep声明在Thread类中是静态的,wait声明在Object类中

使用要求不同,sleep可以在任何场景下使用,wait只能在同步代码块或同步方法中使用

如果都在同步代码块或同步方法中使用:sleep不释放锁,wait释放锁

阅读 0
文章由 美篇工作版 编辑制作
投诉