博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
notify与notifyAll的区别
阅读量:6758 次
发布时间:2019-06-26

本文共 538 字,大约阅读时间需要 1 分钟。

hot3.png

    notify()与notifyAll()都是Object对象用于通知处在等待该对象的线程的方法。两者最大的区别在于:

    notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。

    notify则文明得多他只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,但不惊动其他同样在等待被该对象notify的线程们,当第一个线程运行完毕以后释放对象上的锁此时如果该对象没有再次使用notify语句,则即便该对象已经空闲,其他wait状态等待的线程由于没有得到该对象的通知,继续处在wait状态,直到这个对象发出一个notify或notifyAll,它们等待的是被notify或notifyAll,而不是锁。

    简单点来说就是,notifyAll()使所有在wait状态下的线程进入ready状态,当可以执行时一起竞争CPU的时间片。而notify()则是随机使所有处于wait状态线程的其中之一进入ready状态,当可以执行时获取CPU的时间片,剩下的处于wait状态的线程仍然处于wait状态。

转载于:https://my.oschina.net/u/2314763/blog/737120

你可能感兴趣的文章
SVG图案
查看>>
java 基础 --- volatile
查看>>
poj3158
查看>>
ubuntu 安装kafka
查看>>
学习基础知识真的枯燥
查看>>
航院1009: FatMouse’s Trade
查看>>
IntelliJ Idea 2017 免费激活方法
查看>>
redis基本配置和相关设置
查看>>
「小程序JAVA实战」小程序开发注册用户的接口(33)
查看>>
C#键盘事件处理父窗体子窗体
查看>>
实验六
查看>>
《现代操作系统》学习笔记之存储管理之地址空间
查看>>
ASP.NET MVC2 in Action 读书笔记 [3]
查看>>
报表数据填报中的自动计算
查看>>
online_judge_1105
查看>>
复制功能的实现
查看>>
Remove Element
查看>>
ES6 Promise 用法讲解
查看>>
20180320作业1:源代码管理工具调查——15100216
查看>>
输出空心菱形
查看>>