Java スレッドを別のスレッドからの出力を待機させるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-11 17:59:02
オリジナル
376 人が閲覧しました

How to Make a Java Thread Wait for Output from Another Thread?

Java でのスレッド出力の待機: 同期のジレンマ

マルチスレッド Java アプリケーションでは、複数のスレッドの実行を調整することが重要です。データの整合性とアプリケーションの応答性。あるスレッドが別のスレッドの出力に依存する場合、同期メカニズムが機能します。このようなシナリオの 1 つが、次の質問で説明されています。

質問:

Java スレッド (以下、「アプリ スレッド」と呼びます) を待機させるにはどうすればよいですか?別のスレッド (「db スレッド」) が操作を完了し、出力を提供する準備ができるまで? db スレッドはアプリケーションの存続期間中アクティブなままでなければならず、両方のスレッドが同時に実行される必要があります。 DB スレッドの準備ができるまでアプリ スレッドをブロックすることは許容できる解決策です。

答え:

この同期の問題を解決する鍵は、CountDownLatch を使用することにあります。 CountDownLatch は、複数のスレッドが特定のカウントに達するまで待機してから続行できるようにする同期構造です。この場合:

// Create a CountDownLatch with a counter of 1
CountDownLatch latch = new CountDownLatch(1);
ログイン後にコピー

待機が必要なアプリ スレッド内:

// The app thread waits for the db thread to complete
latch.await();
ログイン後にコピー

操作が完了して出力の準備ができたら、データベース スレッド内:

// The db thread signals the app thread to proceed
latch.countDown();
ログイン後にコピー

このメカニズムにより、データベース スレッドの操作が完了するまでアプリ スレッドは続行されなくなります。アプリ スレッドは、CountDownLatch のカウントがゼロに達するまで待機し、データベース スレッドの準備が完了すると、両方のスレッドが同時に実行できるようになります。このアプローチは、スレッドの実行とデータの整合性の両方を維持しながら、スレッド同期に対するクリーンで効率的なソリューションを提供します。

以上がJava スレッドを別のスレッドからの出力を待機させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート