-3
Thread thread = new Thread("New Thread") 
{
    public void run(){ 
       //instructions A,B and C
    }
};

thread.start();
//instructions D, E

我想知道为什么 D 和 E 在指令 A、B 和 C 终止后不运行。如何让 D 和 E 在指令 A、B 和 C 完成后运行?

4

4 回答 4

4

如何让 D 和 E 在指令 A、B 和 C 终止后运行

嗯,不要在新线程中运行A,B和C?启动一个新线程的全部意义在于当前线程可以在新线程上的方法运行时运行其他代码run()

可以在 D 和 E 之前打电话thread.join()……但你为什么要这么做?

如果您只想按 A、B、C、D、E 的顺序运行代码,那么只需在当前线程中执行所有操作。

于 2012-07-21T22:32:01.300 回答
1

1.如果你想让 D 和 E 在 A、B 和 C 完成后运行,那么你必须使用 join().

2.当在线程上调用join() 时,它会等待该线程死亡(即完成其run() 方法),然后执行join() 之后的行。

3.最好使用CountDownLatch from java.util.concurrent包装。

于 2012-07-21T22:37:16.807 回答
0

线程并行运行(至少大致如此)。因此,当您的线程启动指令 A、B 和 C 时,指令与指令 D 和 E 并行运行。如果您不希望这样做,请不要首先使用另一个线程(至少这是最简单的选择)。

于 2012-07-21T22:32:23.280 回答
0

如果您希望它们在之后运行,请不要使用线程来执行 A、B 和 C。

如果你想要一个特定的顺序,你为什么要使用一个线程?

于 2012-07-23T02:34:00.690 回答