Java でのスレッド出力の待機
2 つの永続スレッド (1 つはアプリケーション ロジック用、もう 1 つはデータベース アクセス用) で構成される Java アプリケーション内場合によっては、アプリケーション スレッドが続行する前にデータベース スレッドの出力を待つことが必要になる場合があります。この記事では、このシナリオで CountDownLatch を使用するソリューションを検討します。
両方のスレッドはアプリケーションの存続期間中同時に実行され、1 つはサーバー通信を処理し、もう 1 つはユーザー操作を処理します。ただし、アプリケーションの初期化では、データベース スレッドの準備ができるまでアプリケーション スレッドを確実に一時停止することが重要です。
while (!dbthread.isReady()) {} のようなポーリング メソッドは、連続的に実行されるため、リソースを大量に消費します。プロセッササイクルの消費量。したがって、より効率的なアプローチは、CountDownLatch を使用することです。これにより、アプリケーション スレッドは続行する前に特定の条件を待機できるようになります。
CountDownLatch をカウンター 1 で初期化します (例: CountDownLatch latch = new CountDownLatch(1))。 ;) 解放する前に 1 つのカウントを待機するラッチを作成します。これを行うには、アプリケーション スレッドが latch.await(); を呼び出します。これにより、countDown() が呼び出されるか、オプションのタイムアウト期間が経過するまで、その実行が効果的に一時停止されます。
データベース スレッド内で、準備ができたら次に、latch.countDown() を 1 回呼び出します。条件が満たされたことを通知し、待機中のアプリケーション スレッドを解放します。この同期により、必要な操作シーケンスを維持しながら、両方のスレッドが同時に動作することが保証されます。
以上がデータベースを効率的に初期化するために CountDownLatch を使用して Java でスレッドを同期する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。