複数のスレッドの完了を待機しています
説明したシナリオでは、複数のスレッドが作成され、それぞれが同じタスクを個別に実行します。 、生成されたすべてのスレッドが実行を終了するまでメインスレッドを一時停止する方法を見つける必要があります。これは、適切な調整を確保し、セカンダリ スレッドが完了する前にメイン スレッドが続行しないようにするために不可欠です。
効果的な解決策の 1 つは、生成されたすべてのスレッドを格納する Thread オブジェクトの配列を作成し、それらを同時に開始してから、配列内の各スレッドで join() メソッドを呼び出すループを実装します。 join() メソッドは、呼び出されたスレッドが終了するまで、呼び出しスレッドをブロックします。
このループを DoSomethingInAThread クラスに組み込むことにより、メイン スレッドの実行を続行する前に、すべてのセカンダリ スレッドが完了するのを確実に待つことができます。
<code class="java">// Array to store created threads private static Thread[] threads; public static void main(String[] args) { // Create an array to store the threads threads = new Thread[1000]; // Start all the threads for (int n = 0; n < 1000; n++) { Thread t = new Thread(new DoSomethingInAThread()); t.start(); // Save the reference to the created thread threads[n] = t; } // Wait for all threads to complete for (int i = 0; i < threads.length; i++) { threads[i].join(); }</code>
上記のように main() メソッドを変更すると、すべてのセカンダリ スレッドの実行が完了した場合にのみメイン スレッドが続行されます。この手法により、メインスレッドの実行がそのすべての子スレッドの完了と確実に同期されます。
以上が複数のスレッドが完了した後にメインスレッドが確実に実行されるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。