在我的程序中,我创建了2个任务。这些任务实现Callable
接口。我将这些传递给2个线程来执行线程池类。我的问题是这2个线程会同时启动吗?在java并发编程中,所有线程都会同时启动吗?
答案 0 :(得分:3)
在java并发编程中所有线程都会同时启动?
不,他们不会。传统的Java SE无法阻止两个线程同时启动。 (实际上,如果你没有多核处理器,那么两个线程实际上不可能同时启动。)
答案 1 :(得分:0)
如果你希望它们几乎同时开始,有几种结构可以帮助你。
您可以使用CyclicBarrier - 您可以创建一个具有2个许可证的新CyclicBarrier。 然后每个线程调用cbarrier.await() - 两个线程都不会继续,直到它们都调用了await,这使得你非常接近同时执行,这是我认为你想要的。
此外,在Java 7中,有一个Phaser,它可以做同样的事情,但应该更高效。