私のプログラムでは、2 つのタスクを作成しています。これらのタスクは、Callable
インターフェースを実装します。これらを 2 つのスレッドに渡して、スレッド プール クラスを実行します。私の質問は、これら 2 つのスレッドが同時に開始されるかどうかです。Java同時実行プログラミングでは、すべてのスレッドが同時に開始されますか?
2 に答える
3
Java同時実行プログラミングでは、すべてのスレッドが同時に開始されますか?
いいえ、そうしません。従来の Java SE では、2 つのスレッドを同時に開始するように強制することはできません。(実際、マルチコア プロセッサを使用していない場合、2 つのスレッドを同時に開始することは物理的に不可能です。)
于 2012-07-02T11:16:07.387 に答える
0
それらをほぼ同時に開始したい場合は、役立ついくつかの構造があります。
CyclicBarrier を使用できます。2 つの許可を持つ新しい CyclicBarrier を作成します。次に、各スレッドが cbarrier.await() を呼び出します - 両方が await を呼び出すまで、どちらのスレッドも進行しません。これにより、同時実行にかなり近づくことができます。
また、Java 7 には Phaser があり、ほとんど同じことを実行できますが、はるかにパフォーマンスが高いはずです。
于 2012-07-08T22:32:59.273 に答える