【发布时间】:2012-06-08 12:54:16
【问题描述】:
为了我的家庭作业,我必须制作一个游戏,让几位国王在棋盘上移动。每个国王必须在自己的线程中从他独特的开始位置移动到独特的结束位置。在下棋之前,国王必须睡最多 10 毫秒(有点随机),然后等待其他人下棋。
我已经用CyclicBarrier 解决了国王互相等待行动的问题,但是当其中一个国王到达他的结束位置从而停止他自己的线程时,问题就出现了。然后CyclicBarrier 正在等待线程调用 await() 方法,但由于线程不再运行,因此这种情况永远不会发生。
有什么建议吗?
【问题讨论】:
-
没有办法直接用 java.util.concurrent.CyclicBarrier 类完成你想要的。但是,您也许可以调整国王的逻辑,以便 CyclicBarrier 仍然可以帮助您。
-
您是否考虑过使用其他方法创建
CyclicBarrier的子类- 或许gone是合适的- 它只是生成一个线程,该线程仅通过await接管退出线程的功能循环吗?这当然是我的处理方式。
标签: java multithreading cyclicbarrier