如何在Java 中同步執行緒:執行緒間通訊的實用解決方案
Java 程式設計中,協調多個執行緒以實現無縫執行力至關重要。考慮這樣一個場景:您有一個應用程式邏輯執行緒和一個必須同時運行的資料庫存取執行緒。這些線程在繼續之前需要滿足某些依賴關係。本文探討了一種同步應用程式執行緒的技術,確保它等待資料庫執行緒準備就緒。
挑戰:無阻塞同步
通常,Thread. join() 用於阻塞一個線程,直到另一個線程完成執行。但是,在這種情況下,兩個執行緒必須在應用程式的整個生命週期中繼續運行。阻塞一個線程是不夠的。
解:CountDownLatch
解法在於利用 CountDownLatch。這個類別使用一個計數器作為執行緒的集合點。
應用程式執行緒中的實作:
在應用程式執行緒中,建立一個計數為1 的CountDownLatch :
CountDownLatch latch = new CountDownLatch(1);
接下來,指示應用程式執行緒等待資料庫執行緒變為就緒:
latch.await();
此呼叫將阻塞應用程式執行緒,直到資料庫執行緒發出訊號表示它已準備好。
資料庫執行緒中的實作:
在資料庫執行緒中,一旦初始化過程完成,就應該遞減CountDownLatch計數器:
latch.countDown();
此CountDownLatch計數器:
此操作會將應用程式執行緒從等待狀態釋放,允許兩個執行緒無縫地繼續其操作。
優點:
以上是如何在 Java 中無阻塞地同步執行緒:使用 CountDownLatch 進行執行緒間通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!