0

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

4

2 回答 2

3

在Java并发编程中,所有线程将同时启动?

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

于 2012-07-02T11:16:07.387 回答
0

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

您可以使用 CyclicBarrier - 您创建一个具有 2 个许可证的新 CyclicBarrier。然后每个线程调用 cbarrier.await() - 在两个线程都调用 await 之前,两个线程都不会继续执行,这使您非常接近同时执行,这就是我相信您想要的。

此外,在 Java 7 中,有一个 Phaser,它可以做几乎相同的事情,但性能应该更高。

于 2012-07-08T22:32:59.273 回答