文档章节

notify与notifyAll的区别

colorlesswind
 colorlesswind
发布于 2016/08/24 13:54
字数 341
阅读 20
收藏 0

    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状态。

© 著作权归作者所有

共有 人打赏支持
colorlesswind
粉丝 1
博文 40
码字总数 9065
作品 0
广州
私信 提问
notify和notifyAll区别

转载 http://blog.sina.com.cn/s/blog4b93170a0102dqws.html notify()和notifyAll()都是Object对象用于通知处在等待该对象的线程的方法。 void notify(): 唤醒一个正在等待该对象的线程。 vo...

jeromePeng
2014/03/11
0
0
java中的wait、notify、notifyAll

在java中,线程间的通信可以使用wait、notify、notifyAll来进行控制。从名字就可以看出来这3个方法都是跟多线程相关的,但是可能让你感到吃惊的是:这3个方法并不是Thread类或者是Runnable接...

Airship
01/09
0
0
多线程通信的三大法器,你真的会用吗?

wait, notify, notifyAll 是多线程之间通信最重要的 3 个方法,今天,栈长给大家普及一下它们的知识要点及应用实战。 定义 wait:让持有该对象锁的线程等待; notify: 唤醒任何一个持有该对象...

Java技术栈
2018/11/27
0
0
通过两个小栗子来说说Java的sleep、wait、notify、notifyAll的用法

线程是计算程序运行的最小载体,由于单个单核CPU的硬件水平发展到了一定的瓶颈期,因此就出现了多核多CPU的情况,直接就导致程序员多线程编程的复杂。由此可见线程对于高性能开发的重要性。 ...

青夜之衫
2017/12/05
0
0
java并发(一)wait,notify的使用

Java是第一个内置对多线程支持的主流编程语言。在Java5之前,对多线程的支持主要是通过对块结构的同步实现的(synchronized配合wait,notify,notifyAll),Java5引入了java.util.concurren...

风荷举
2013/10/17
0
1

没有更多内容

加载失败,请刷新页面

加载更多

用 C 语言编写 Windows 服务程序的五个步骤(转)

摘要   Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并 实现一个简单的服务程...

_编程菜鸟_
30分钟前
0
0
Linux各目录及每个目录的详细介绍

目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/...

若杰
31分钟前
4
0
vue组件系列5、日期选择

插件部分源码 <template> <div class="date-picker" @click.stop> <input class="input" v-model="dateValue" v-on:mouseover="openPanel" /> <!-- 动画特效 --> <transi......

轻轻的往前走
33分钟前
1
0
SQL

BEGIN #定义一个变量来保存该记录是否存在 declare num int; #这条sql,就是查询对应的记录有多少条,注意 into num 这两句话,就是把count(*) 查出的值,赋给到num中 select co...

张泽立
34分钟前
2
0
云栖科技评论87期:建立AI规则非常重要 但充分对话更重要

【卷首语】建立AI规则非常重要 但充分对话更重要    2016年,谷歌CEO Sundar Pichai宣布谷歌战略从Mobile First(移动优先)转向AI First(人工智能优先),在此之后,谷歌不仅在AI领域持续投入...

Mr_zebra
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部