在写java程序的时候,线程是经常用到的技术,比如事件分发、消息分发等。线程的执行不会造成主线程的阻塞,可以在后台自己单独的执行,但是有时候我们会需要知道后台的线程是否执行完毕,然后根据线程执行情况决定是否进行下一步的操作,可以在某一线程执行完毕后改变主线程中的标识,然后主线程实时的监控标识的变化。
java提供了几个现成的类用于多个线程执行时,各个线程执行进度的管理。
1、CountDownLatch
该类通过该计数的原理控制线程的执行,两个主要方法:await,countDown
初始化的时候需要传递一个参数count,记录需要执行的子线程的总数,每一个子线程执行完毕后调用countDown后计数减1,当计数为0的时候,释放自己await的线程。
void testCountDownLatch() throws Exception {
int count = 5;
final CountDownLatch mainTask = new CountDownLatch(count);
for(int i=0; i
new Thread(){
public void run() {
try {
System.out.println("Thread " + Thread.currentThread().getId() + " 执行完毕!");
mainTask.countDown(); // 计数减一
} catch (Exception e) {
e.printSt