CountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。 countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 作者:指尖架构141319 那么刚才也有说CountDownLatch是阻塞一个或多个线程等待其他线程完成操作,那么我们试一下。
(计数器)CountDownLatch
存在于java.util.cucurrent包下。
链接:https://www.jianshu.com/p/e233bb37d2e6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。public class CountDownLatchExample { // 循环次数 private static final int FOR_NUMBER = 5; public static void main(String[] args) { // 查询数据 for (int i = 0; i < FOR_NUMBER; i++) { new Thread(() -> { System.out.println("查询第:t" + Thread.currentThread().getName() + "张表数据完成!"); }, String.valueOf(i)).start(); } System.out.println("查询完毕"); } }
可以看到,还有数据没查询完成他就体检进行查询完毕的操作了。那如果在实际开发过程中,就等于数据还没处理完成就返回用户数据了。这并不是我们想要的结果。public class CountDownLatchExample { // 循环五次 private static final int FOR_NUMBER = 5; // 实例化定义一个CountDownLatch需要减少的总次数 private static CountDownLatch countDownLatch = new CountDownLatch(5); public static void main(String[] args) { // 查询数据 for (int i = 0; i < FOR_NUMBER; i++) { new Thread(() -> { System.out.println("查询第:t" + Thread.currentThread().getName() + "张表数据完成!"); // 执行完 查询 然后进行递减操作 每次减1 countDownLatch.countDown(); }, String.valueOf(i)).start(); } try { countDownLatch.await(); // await()方法起到阻塞的作用,直到计数器值等于0 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("查询完毕"); } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算