最近在代码走查的过程中还是发现有些同事对于countDown的位置应该写在哪里还是不清楚,因此有必要记录一下。
必须强调一点的是,CountDownLatch的countDown需要放在finally中执行。这是为了能够保证countDown必须执行。
使用CountDownLatch进行异步转同步操作,每个线程退出前必须调用countDown方法。若线程执行代码出现catch异常,为了确保countDown方法可以被执行将其放在finally中。这样就能够避免主线程无法执行至await方法,直到超时才返回结果。
public class threadC {
public void operate(CountDownLatch countDownLatch){
try{
System.out.println("这里测试输出!!");
}catch (RuntimeException e){
e.getMessage();
}finally {
countDownLatch.countDown();
}
}
}