ホームページ >Java >&#&チュートリアル >ブロックせずに Java でスレッドを同期する方法: スレッド間通信に CountDownLatch を使用する
Java でスレッドを同期する方法: スレッド間通信の実用的なソリューション
Java プログラミングでは、複数のスレッドを調整してシームレスを実現します実行が重要です。アプリケーション ロジック スレッドとデータベース アクセス スレッドを同時に実行する必要があるシナリオを考えてみましょう。これらのスレッドでは、続行する前に特定の依存関係を満たす必要があります。この記事では、アプリケーション スレッドを同期し、データベース スレッドの準備ができるまで待機する手法について説明します。
課題: ブロックせずに同期
通常はスレッドです。 join() は、別のスレッドが実行を終了するまでスレッドをブロックするために使用されます。ただし、この場合、アプリケーションの存続期間中、両方のスレッドが実行し続ける必要があります。 1 つのスレッドをブロックするだけでは十分ではありません。
解決策: CountDownLatch
解決策は CountDownLatch を利用することにあります。このクラスは、スレッドのランデブー ポイントとして機能するカウンターを使用します。
アプリケーション スレッドでの実装:
アプリケーション スレッドで、カウント 1 の CountDownLatch を作成します。 :
CountDownLatch latch = new CountDownLatch(1);
次に、データベース スレッドの準備ができるまで待機するようにアプリケーション スレッドに指示します:
latch.await();
この呼び出しは、データベース スレッドが準備ができたことを通知するまでアプリケーション スレッドをブロックします。 .
データベース スレッドでの実装:
データベース スレッドでは、初期化プロセスが完了すると、CountDownLatch カウンタをデクリメントする必要があります:
latch.countDown();
このアクションにより、アプリケーション スレッドが待機状態から解放され、両方のスレッドがシームレスに操作を継続できるようになります。
利点:
CountDownLatch を使用すると、次のような利点があります。
以上がブロックせずに Java でスレッドを同期する方法: スレッド間通信に CountDownLatch を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。