前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >notify和notifyall的区别

notify和notifyall的区别

作者头像
名字是乱打的
发布2022-05-13 11:32:33
2650
发布2022-05-13 11:32:33
举报
文章被收录于专栏:软件工程
想知道notify和notifyall的区别必须先了解两个概念
  • 锁池EntryList
  • 等待池WaitSet
锁池EntryList

假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B、C想要调用这个对象的某个synchronized方法(或者块),由于B、C线程在进入对象的synchronized方法(或者块)之前必须先获得该对象锁的拥有权,而恰巧该对象的锁目前正被线程A所占用,此时B、C线程就会被阻塞,进入一个地方去等待锁的释放,这个地方便是该对象的锁池

等待池WaitSet

假设线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,同时线程A就进入到了该对象的等待池中,进入到等待池中的线程不会去竞争该对象的锁。

notify和notifyall的区别
  • 两者均针对对象
  • notifyAll会让所有处于等待池的线程全部进入锁池去竞争获取锁的机会
  • notify 只会随机选取一个处于等待池中的线程进入锁池去竞争获取锁的机会。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 想知道notify和notifyall的区别必须先了解两个概念
  • 锁池EntryList
  • 等待池WaitSet
  • notify和notifyall的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档