複数のスレッドを使用する場合、続行する前にスレッドの実行を調整し、タスクが完了していることを確認することが重要です。このシナリオでは、Web からデータを同時に取得し、バッファー クラスにデータを設定する 5 つのスレッドがあります。目標は、バッファ内のデータを検証し、すべてのスレッドが作業を完了した場合にのみデータベースに保存することです。
これを Java で実現する効果的な方法の 1 つは、次のとおりです。スレッド プールを管理するための便利な API を提供する ExecutorService を利用します。このアプローチを実装する方法は次のとおりです。
ExecutorService es = Executors.newCachedThreadPool(); // Submit the tasks to the executor service for (int i = 0; i < 5; i++) { es.execute(new Runnable() { // Implement your task here }); } // Shut down the executor service after submitting the tasks es.shutdown(); // Wait for all tasks to finish or for a specified timeout boolean finished = es.awaitTermination(1, TimeUnit.MINUTES); // If all tasks have finished, proceed with validation and database storage if (finished) { validateBufferData(); storeDataInDatabase(); }
awaitTermination メソッドを利用すると、executor サービス内のすべてのタスクが完了するか、指定されたタイムアウトに達するまで、メイン スレッドをブロックできます。これにより、すべてのスレッドが作業を完了した場合にのみデータ検証とデータベース保存が行われることが保証されます。
以上が続行する前にすべての Java スレッドが終了していることを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。