栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

谁能解释线程监视器并等待?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

谁能解释线程监视器并等待?

如果对象在调用Object.wait()时不拥有对象监视器,则在释放监视器之前,它将无法访问该对象以设置通知侦听器。而是将其视为尝试访问同步对象上的方法的线程。

或者换句话说,两者之间没有区别:

public void doStuffonThisObject()

和以下方法:

public void wait()

在释放对象监视器之前,这两种方法都将被阻止。这是Java中的一项功能,可防止一个以上的线程更新对象的状态。它只是对wait()方法产生了意想不到的后果。

大概,wait()方法未同步,因为这可能会导致Thread在对象上具有多个锁的情况。(有关此信息,请参阅Java语言规范/锁定。)多个锁是一个问题,因为wait()方法只会撤消一个锁。如果该方法是同步的,则可以确保仅撤消该方法的锁,同时仍保留潜在的外部锁。这将在代码中创建死锁条件。

要回答有关Thread.sleep()的问题,Thread.sleep()不保证您正在等待的任何条件都得到满足。使用Object.wait()和Object.notify()允许程序员手动实现阻塞。发送通知已满足条件后,线程将解除阻塞。例如,从磁盘的读取已完成,并且线程可以处理数据。Thread.sleep()将要求程序员轮询是否已满足条件,如果不满足则返回睡眠状态。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414380.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号