【发布时间】:2014-10-10 09:22:00
【问题描述】:
假设有 3 个线程(t1、t2、t3)从主线程产生。我将如何确保特定线程首先完成其执行,而另一个线程最后完成。我并不是要在另一个线程“完成”之后开始一个线程,而是希望确保它们按特定顺序完成。
示例代码将非常有帮助。
更准确地说,例如在游戏应用程序中,您可能希望先更改图形,然后再生成声音,然后更新乐谱。
【问题讨论】:
-
你不能那样做。您能做的最好的事情是创建一个所有线程都完成的“检查点”。参考文献
CyclicBarrier和CountDownLatch. -
为什么?这完全取决于它们需要多长时间以及它们之间是否存在类似信号量的交互。如果没有,则完成顺序是不确定的。
-
我突然想问为什么你想要一个有保证的线程终止顺序。没有更多细节,它开始看起来越来越像XY problem...
-
请与我们分享您的实际问题。您不会(即不应)生成一个线程只是为了更新游戏中的分数一次...
-
你可以使用wait() notify()
标签: java multithreading concurrency