0

假设我有线程 T1、T2 和 T3,我将如何确保线程 T2 在 T1 之后运行,线程 T3 在 T2 之后运行?

4

5 回答 5

3

您的问题的解决方案可能是“不要使用多个线程”。如果要确保动作 2 在动作 1 之后执行,动作 3 在动作 2 之后执行,没有交错,那么解决方案是执行动作 1,然后执行动作 2,然后执行动作 3。线程作为一种机制很有用对于并行性,并通过尝试确保操作以特定顺序运行,您明确禁止并行性。不要试图使用一种机制来做与其设计目的完全相反的事情。

于 2012-09-21T19:02:02.817 回答
3

在 T1 死亡后,您将不得不开始 T2。

t1.start();
t1.join();
t2.start();

实际上,如果您需要按顺序运行它们,您可能不需要/不应该将它们放在单独的线程中。只需将 t1 和 t2 代码依次放在一个线程中即可。

于 2012-09-21T19:03:04.130 回答
0

看看Thread#join()

等待这个线程死掉。

于 2012-09-21T19:02:19.417 回答
0

你可以设计这个

  1. 倒计时锁存器
  2. 等待通知全部
  3. 观察者可观察的模式。
于 2012-09-21T19:05:38.067 回答
0

在 T1 代码的末尾开始 T2。在 T2 代码的末尾开始 T3。

或者只是按照其他海报的建议在一个线程中按顺序运行这些函数,因为这个练习基本上没有意义。

于 2012-09-21T19:49:02.160 回答