简短版:在java中,有没有办法找出线程处于等待状态的时间?如果相关,我所指的对象会通过调用condition.await()
.
长版:(这是一道作业题)
我正在开发一个程序,该程序创建 10 个供应商线程和 10 个消费者线程,以及一个同步的公共“会议室”。供应商线程休眠一会儿,产生一个随机数,并且(如果会议室的数据字段为空),将随机数放入该字段并标记为具有相同 id 的消费者线程。如果数据字段不为空,则它们await
处于 Occupied 状态。消费者线程检查会议室中的数据是否为他们标记:如果没有,则他们await
处于错误ID 条件。如果是这样,他们会将数字存储在数据字段中,将其设置为 null 并调用Occupied.signalAll()
以通知供应商线程数据字段现在为空。(供应商线程调用wrongID.signalAll()
以通知消费者线程该字段中有新数据)。
我有几个诊断println
声明(供应商 0 进入会议室,留下数据/供应商 1 进入等候室......),一切似乎都运行良好。我还想在线程唤醒时打印语句,显示它们处于等待状态的时间。这可能吗?
另外,如果有人在这里看到我的逻辑中的任何缺陷,请随时向我指出(这是我第一次涉足多线程)