本文架构
countDownLatch
1.作用
这是用来做多线程操作的类,和join方法类似
2.构造方法
- CountDownLatch countDownLatch = new CountDownLatch(1);
#这个表示构造一个值为1的对象,当对象的值为0时,阻塞的方法则可继续执行
3.阻塞当前线程:
- countDownLatch.await();
#这个方法表示阻塞当前线程,当本对象的值为0时,接着继续执行后面的代码
4.将对象的值减1:
- countDownLatch.countDown();
#如果本对象的值原本就是1,执行本方法之后,则对象的值变为0,则本对象await()方法阻塞的线程将继续执行
public class TestCountDownLatch {
//创建一个countDownLatch对象,并将初始值设置为3
private static CountDownLatch countDownLatch = new CountDownLatch(3);
public static void main(String[] args) throws Exception {
for(int i = 0; i < 3; i ++) {
Thread thread = new Thread() {
@Override
public void run() {
try {
Thread.sleep(3000);
System.out.println("工作线程执行了");
System.out.println("工作线程将countDownLatch值减1");
//将countDownLatch值减1
countDownLatch.countDown();
System.out.println("当前countDownLatch的值:" + countDownLatch.getCount());
}catch (Exception e){
e.printStackTrace();
}
}
};
thread.start();
}
//是主线程等待
countDownLatch.await();
System.out.println("我是主线程");
}
}