是所有线程将在java并发编程中同时启动?

时间:2012-07-02 11:13:14

标签: java java.util.concurrent

在我的程序中,我创建了2个任务。这些任务实现Callable接口。我将这些传递给2个线程来执行线程池类。我的问题是这2个线程会同时启动吗?在java并发编程中,所有线程都会同时启动吗?

2 个答案:

答案 0 :(得分:3)

  在java并发编程中

所有线程都会同时启动?

不,他们不会。传统的Java SE无法阻止两个线程同时启动。 (实际上,如果你没有多核处理器,那么两个线程实际上不可能同时启动。)

答案 1 :(得分:0)

如果你希望它们几乎同时开始,有几种结构可以帮助你。

您可以使用CyclicBarrier - 您可以创建一个具有2个许可证的新CyclicBarrier。 然后每个线程调用cbarrier.await() - 两个线程都不会继续,直到它们都调用了await,这使得你非常接近同时执行,这是我认为你想要的。

此外,在Java 7中,有一个Phaser,它可以做同样的事情,但应该更高效。