CountDownLatch是Java并發包中的一個同步輔助類,它允許一個或多個線程等待直到一組操作完成
實現細節:
以下是一個簡單的Android中使用CountDownLatch的示例:
import android.os.Bundle;
import android.os.CountDownLatch;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private CountDownLatch mLatch;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLatch = new CountDownLatch(1); // 設置需要等待的操作數為1
mHandler = new Handler();
// 啟動一個新線程,模擬耗時操作
new Thread(new Runnable() {
@Override
public void run() {
try {
// 模擬耗時操作,例如從網絡獲取數據
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 耗時操作完成后,調用countDown()方法
mLatch.countDown();
}
}).start();
// 在主線程中調用await()方法,等待耗時操作完成
try {
mLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 耗時操作完成后,執行相關操作
mHandler.post(new Runnable() {
@Override
public void run() {
// 更新UI或執行其他操作
}
});
}
}
在這個示例中,我們創建了一個CountDownLatch實例,并設置需要等待的操作數為1。然后在一個新線程中執行耗時操作,操作完成后調用countDown()方法。在主線程中調用await()方法等待耗時操作完成。當耗時操作完成后,我們使用Handler更新UI或執行其他操作。