千家信息网

Java互斥的"等待-通知"机制

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Java互斥的"等待-通知"机制",在日常操作中,相信很多人在Java互斥的"等待-通知"机制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java互
千家信息网最后更新 2026年11月03日Java互斥的"等待-通知"机制

这篇文章主要介绍"Java互斥的"等待-通知"机制",在日常操作中,相信很多人在Java互斥的"等待-通知"机制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java互斥的"等待-通知"机制"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

话不多说咱们先看一段代码哈哈哈

这段代码的意思就是我们去行政服务中心办护照,工作人员A来服务我们,我们需要给他我们的身份证才能办理对吧,办好之后付了钱才会生效。

因为A同一时刻只能服务一个人,所以我们给A加了个锁。但是上面代码有一点不符合我们的现实逻辑,

就是这一段代码,就是说如果你排队叫号,叫到你了你去柜台,发现你没带身份证,那正常情况下就是你得会回家拿身份证,工作人员A是不会让你占着位置等你的,而是会叫下一号。如果不叫下一号等你回家拿身份证来效率多低啊?那放在我们代码里面也是一样的!

所以如何提高效率呢?这就引入了"等待-通知"机制了!

我们改造下上面的类A

经过这个改造就符合我们的正常情况了!但你去了柜台发现你没身份证,工作人员告诉你不好意思你回去拿吧(wait)!就是让你去一边等着去,下一位!

翻译到java中就是,你这个线程来执行办理护照,但是你不满足条件所以你就一边等着(解锁了),不要阻塞着大家!这样效率就提高了很多了!然后等一个人办理好之后就是通知一下那些等待的线程,看看你们现在带身份证了没?如果带来再来排队!

咱们再深入的剖析一下这个流程

就是我们被锁的方法就会被统一包起来!所有的进出都被synchroinzed 把控了。

等待对列就是存放那些等待的想进入这个临界区的线程们,条件变量就是对应着我们上面代码的IdCard,调用了wait()就表示不满足我们的条件,所以让当前线程进去条件变量等待对列!

再调用notifyAll()表面现在条件满足了!然后那些条件对待对列中的所有线程出去到等待对列中排队了!

这里说说为什么用notifyAll()而不是notify(),因为notify()是随机唤醒一个条件变量等待对列中的线程去让他们出去继续排队!那就是有可能一些线程永远不会被通知到!那不玩完了么?所以推荐使用notifyAll();

还有一点我们用了

为什么加了个while循环再一次对条件进行判断呢?

因为notifyAll()的时候你的条件是满足的!但是你又出去排队了,那指不定排队轮到你的之后条件又不满足了!所以需要加个while循环!

还有如果你用的是Lock其实也是一样的意思!

所以引入了"等待-通知"机制提高了我们代码执行的效率!

到此,关于"Java互斥的"等待-通知"机制"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

就是 条件 代码 线程 机制 身份 身份证 效率 学习 人员 变量 工作人员 意思 工作 服务 个人 情况 护照 方法 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 什么是科技互联网 朗新科技与工业互联网 西安互联网科技 广州宏创互联网科技 朗涯互联网科技 奇酷互联网络科技公司 电子科技大学互联网 友谊互联网络科技 互联网科技大奖都有哪些公司 中科明德北京互联网科技 江苏苏星互联网科技有限公司 四川互联网展示科技馆设计 互联网风格科技公司名称 互联网公司属于科技吗 兰石爱特工业互联网科技分公司 众联互联网络科技 瑞安市蟠桃会互联网科技有限公司 互联网企业和网络科技有限公司 知域互联网科技有限公司官网 小米移动互联网科技园 广州互联网络科技有限公司 广州紫鲸互联网科技 金融科技和互联网金融 盛创互联网科技有限公司 阿里巴巴算科技企业还是互联网 宜昌元轩互联网科技有限公司 辽宁互联网新科技 高科技互联网发展前景如何 全球科技与互联网公司市值变化
0