私はアプリケーションロジックスレッドとデータベースアクセススレッドを持つ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();