CountDownLatch 使用记录
CountDownLatch是java中用来阻塞当前线程包括主线程(Android中阻塞主线程还是会有anr问题)等待其他线程执行完成后唤醒。
可以阻塞一个以上的线程。
用法:需要阻塞哪个线程就在哪个线程重调用latch.await();方法
初始化时传入的参数代表线程计数,也就是需要等待的线程数,例如需要等待5个线程执行完成后唤醒等待线程,就传5.
线程执行完成后需要调用latch.countDown();方法使计数减一。
使用实例:
final CountDownLatch latch=new CountDownLatch(1);
new Thread(new Runnable() {
@Override
public void run() {
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
linearLayout.postDelayed(new Runnable() {
@Override
public void run() {
ToastUtils.showToast(TTTActivity.this,"completed2");
}
},1000);
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
linearLayout.post(new Runnable() {
@Override
public void run() {
ToastUtils.showToast(TTTActivity.this,"completed1");
}
});
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5*1000);
latch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();

浙公网安备 33010602011771号