在我的程序中,我创建了2个任务。这些任务实现Callable接口。我将它们传递给2个线程来执行线程池类。我的问题是,这两个线程会同时启动吗?在java并发编程中,所有的线程都会同时启动吗?
发布于 2012-07-02 19:16:07
在java并发编程中,所有线程会同时启动吗?
不,它们不会。对于传统的Java SE,您无法强制两个线程同时启动。(实际上,如果您没有多核处理器,那么在物理上不可能同时启动两个线程。)
发布于 2012-07-09 06:32:59
如果您希望它们几乎同时启动,有几个构造可以帮助您。
您可以使用CyclicBarrier -您可以创建一个具有2个许可证的新CyclicBarrier。然后每个线程调用cbarrier.await() -两个线程都不会继续执行,直到两个线程都调用了await,这使您非常接近同时执行,这正是我相信您想要的。
此外,在Java7中,有一个Phaser,它可以做几乎相同的事情,但应该更有性能。
https://stackoverflow.com/questions/11292517
复制相似问题