【发布时间】:2010-11-29 03:53:46
【问题描述】:
我相信我面临的问题是嵌套监视器锁定的变体。基本上我有两组线程(不是线程组,只是逻辑组)。一组线程(假设是后台组)将在另一组线程(工作组)工作时等待对象。工作线程一个接一个地完成,直到最后一个工作线程处于“完成”方法中。我想要做的是找出一些方法告诉最后一个工作线程等待,然后调用 notifyAll() 来唤醒所有后台线程。正如您可能猜到的那样,两组线程正在来回切换 - 一组正在工作,另一组正在等待,然后组切换。问题是,如果我在当前等待的线程上 notifyAll() 则不能保证最终的工作线程会在通知的线程完成之前进入 wait() 调用并尝试开始下一次交换。
对不起,如果这个问题有点不对劲 - 似乎我在并发上工作的越多,我的代码就越复杂:(
【问题讨论】:
标签: java concurrency locking monitoring deadlock