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

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

私はアプリケーションロジックスレッドとデータベースアクセススレッドを持つJavaアプリケーションを作成しています。どちらもアプリケーションの存続期間中存続し、同時に実行されている必要があります(1つはサーバーと通信し、もう1つはユーザーと通信します。アプリケーションが完全に起動したら、両方彼らの仕事への参加。

ただし、起動時に、最初にアプリ スレッドが DB スレッドの準備ができるまで待機するようにする必要があります (現在はカスタム メソッドをポーリングして決定されますdbthread.isReady())。DB スレッドの準備ができるまでアプリ スレッドがブロックされてもかまいません。

Thread.join()解決策のようには見えません - DB スレッドはアプリのシャットダウン時にのみ終了します。

while (!dbthread.isReady()) {}ある程度は動作しますが、空のループは多くのプロセッサ サイクルを消費します。

他に何かアイデアはありますか? ありがとうございます。

ベストアンサー1

使うカウントダウンラッチカウンターは1です。

CountDownLatch latch = new CountDownLatch(1);

アプリのスレッドで、

latch.await();

dbスレッドで、完了したら、次の操作を実行します。

latch.countDown();

おすすめ記事