Java中CountDownLatch工具类详细解析
Java中CountDownLatch工具类详细解析
创建CountDownLatch对象时,会传入一个count数值,该对象每次调用countDown()方法会使count -- ,就是count每次减1; 调用await()方法,程序会阻塞等待,当count被减到0了之后,await()后面的程序解除阻塞,可以继续运行。 阻塞的是调用await()方法的后续代码,调用countDown()方法count自减1,当count=0 时解除阻塞。 如:
CountDownLatch countDownLatch = new CountDownLatch(4); //初始 count = 4 countDownLatch.countDown(); // count = 4 -1; countDownLatch.countDown(); // count = 3-1; countDownLatch.await(); //当count =0 ,可以执行后续代码
代码示例1: 当count不为0时,程序会一直等待。
import java.util.concurrent.CountDownLatch; public class Test { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(5); new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"已运行!"); countDownLatch.countDown(); } }).start(); countDownLatch.await(); System.out.println(" 程序执行完毕! "); } }
代码示例2:count=0解除阻塞。
import java.util.concurrent.CountDownLatch; public class Test1 { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(5); for(int i = 0 ; i < 5 ; i++){ new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"已运行!"); countDownLatch.countDown(); } }).start(); } countDownLatch.await(); System.out.println(" 程序执行完毕! "); } }
到此这篇关于Java中CountDownLatch工具类详细解析的文章就介绍到这了,更多相关CountDownLatch工具类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
在SpringBoot环境中使用Mockito进行单元测试的示例详解
Mockito特别适用于在Spring Boot环境中进行单元测试,因为它能够轻松模拟Spring应用中的服务、存储库、客户端和其他组件,通过使用Mockito,开发者可以模拟外部依赖,从而使单元测试更加独立和可靠,本文给大家介绍了在Spring Boot环境中使用Mockito进行单元测试2024-01-01Java多线程编程之读写锁ReadWriteLock用法实例
这篇文章主要介绍了Java多线程编程之读写锁ReadWriteLock用法实例,本文直接给出编码实例,需要的朋友可以参考下2015-05-05SpringCloud的@RefreshScope 注解你了解吗
这篇文章主要介绍了Spring Cloud @RefreshScope 原理及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-09-09
最新评论