【发布时间】:2015-07-02 17:46:01
【问题描述】:
对不起,如果这是一个愚蠢的问题。我在一本书中找到了一个已解决的问题,但该解决方案不包含源代码。我提出了一个代码,但我不确定该代码是否符合解决方案规范。如果可能,请更正代码或提出更好的代码(欢迎解释)。感谢您的帮助。
问题:
共有三个线程 T1、T2 和 T3。 Java中如何保证T1、T2、T3的顺序?
解决方案:
多线程中的排序可以通过不同的方式实现,但是您可以简单地使用线程类的 join() 方法在另一个线程完成执行时启动一个线程。 要确保三个线程执行,您需要先启动最后一个,例如T3 然后以相反的顺序调用连接方法,例如T3调用T2.join,T2调用T1.join,这样T1先完成,T3最后完成。
建议代码:
final Thread t3 = new Thread(new T3()); // assume T3 is a Runnable
final Thread t2 = new Thread(new T2());
final Thread t1 = new Thread(new T1());
t3.start();
t2.start();
t1.start();
t2.join();
t1.join();
【问题讨论】:
-
这个问题确实不好说。如前所述,最好的答案是重新架构以仅使用单个线程,并按需要完成的顺序执行三件事。
-
您是要确保它们以特定顺序开始,以特定顺序完成,还是按顺序开始和完成?
-
在线程 1 的代码末尾创建线程 T2。在线程 2 的代码末尾创建线程 T3。或者只是按照建议不要打扰多个线程其他。我很确定这个愚蠢的要求无论如何都是重复的。
标签: java multithreading