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或执行其他操作。