java – 如何找出线程处于等待状态的时间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何找出线程处于等待状态的时间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1323字,纯文字阅读大概需要2分钟。
内容图文
简短版本:在java中,有没有办法找出一个线程处于等待状态的时间长度?如果相关,则通过调用condition.await()将我所引用的对象发送到等待状态.
长版:(这是作业问题)
我正在开发一个程序,可以创建10个供应商线程和10个消费者线程,并具有同步的通用“会议室”.供应商线程稍微休眠,产生随机数,并且(如果会议室的数据字段为空),将随机数放在该字段中,并将其标记为具有相同ID的消费者线程.如果数据字段不为空,则等待处于占用状态.消费者线程检查会议室中的数据是否标记为:如果没有,则等待错误的ID条件.如果是这样,他们
它们将数字存储在数据字段中,将其设置为null并调用Occupied.signalAll()以通知供应商线程数据字段现在为空. (供应商线程调用wrongID.signalAll()来通知消费者线程新数据在该字段中).
我有几个诊断println语句(供应商0进入会议室,离开数据/供应商1进入等候室……),一切似乎都运行正常.我还想在线程唤醒时打印语句,显示它们处于等待状态的时间.这可能吗?
此外,如果有人在我的逻辑中看到任何缺陷,请随时向我指出(这是我第一次尝试多线程)
解决方法:
因为你不能覆盖wait()(它是最终的)或条件(除非你自己制作Lock和Condition实现..),我建议尽可能简单.
我想你的线程(包括消费者和供应商)都有这样的代码:
while (conditionForWaiting) {
condition.await()
}
这样,您可以在进入while循环之前添加System.currentTimeMillis()的时间戳(如果conditionForWaiting为true!).然后,只需打印(System.currentTimeMillis() – startTime)/ 1000即可打印线程等待的秒数.或者将它保存到一个领域并拥有一个吸气剂,无论你想用它做什么.
内容总结
以上是互联网集市为您收集整理的java – 如何找出线程处于等待状态的时间全部内容,希望文章能够帮你解决java – 如何找出线程处于等待状态的时间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。