在等待并通知对象时,' x'假设x.wait()和x.notify()。是否应该在同一个对象上同步等待和通知的调用?我的意思是synchronized(x){x.wait},或者使用另一个对象进行同步是ok / sensible / wrong我的意思是synchronized(y){x.wait}。
答案 0 :(得分:2)
等待和通知的调用是否也应该在同一个对象上同步?
不仅 它们应该在同一个对象上同步,它们必须在同一个对象上同步。
事实上,wait和notify的文档非常明确,如果代码不遵循该规则会发生什么:
<强>抛出:强>
IllegalMonitorStateException
- 如果当前线程不是此对象监视器的所有者。
答案 1 :(得分:0)
<conditionExpression><![CDATA["MODERNE_NOIR_ET_BLANC".equals($P{choixImpression})]]></conditionExpression>
这不是正确的用法。您正在同步对象y并尝试锁定x对象。
您可以仔细查看synchronized(y){
x.wait();
}
synchronized
wait
个关键字的使用情况以及多线程编程。
您可以查看以下链接: