CountDownLatch 使用示例 向右看齐 2022-04-06 06:40 193阅读 0赞 简单介绍下使用CountDownLatch 的使用方法 CountDownLatch 是在开始指定线程数,然后通过 latch.countDown();终止一次线程数-1,最后执行完成通过 调用 latch.await(); 在这个方法之后,所有的线程都执行完毕。 我的使用场景是异步的数据组装。 下面贴出一些简单的实例代码,基于此代码可以参考 CountDownLatch 的使用 package com.example.thread; import java.util.List; import java.util.concurrent.CountDownLatch; /** * 类BuildBaseInfoThread.java的实现描述:TODO 类实现描述 * * @author xupeng 2017年5月15日 下午6:58:01 */ public class BuildBaseInfoThread extends Thread { private CountDownLatch latch; private List<String> result; @Override public void run() { try { Thread.sleep(1000); result.add("baseInfo"); } catch (Exception e) { e.printStackTrace(); } finally { latch.countDown(); System.out.println(latch.getCount()); } } public BuildBaseInfoThread(CountDownLatch latch, List<String> result) { super(); this.latch = latch; this.result = result; } } package com.example.thread; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; /** * 类BuildBaseInfoThread.java的实现描述:TODO 类实现描述 * * @author xupeng 2017年5月15日 下午6:58:01 */ public class BuildExtendInfoThread extends Thread { private CountDownLatch latch; private List<String> result; @Override public void run() { try { Thread.sleep(2000); List<String> list = new ArrayList<String>(); // synchronized (result) {同步汇总 // result.addAll(list); // } result.add("extend"); } catch (Exception e) { e.printStackTrace(); } finally { try { Thread.sleep(1000); } catch (InterruptedException e) { } latch.countDown(); System.out.println(latch.getCount()); } } public BuildExtendInfoThread(CountDownLatch latch, List<String> result) { super(); this.latch = latch; this.result = result; } } package com.example.thread; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; public class CountDownLatchTest { public static void main(String[] args) { CountDownLatch latch = new CountDownLatch(2); List<String> result = new ArrayList<String>(); new BuildBaseInfoThread(latch, result).start(); new BuildExtendInfoThread(latch, result).start(); System.out.println(result); try { latch.await(); System.out.println(result); } catch (InterruptedException e) { e.printStackTrace(); } } } <script type="text/javascript"> $(function () \{ $('pre.prettyprint code').each(function () \{ var lines = $(this).text().split('\\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) \{ $numbering.append($('<li/>').text(i)); \}; $numbering.fadeIn(1700); \}); \}); </script>
相关 Java并发编程:CountDownLatch、CyclicBarrier等工具使用示例 Java的`CountDownLatch`, `CyclicBarrier`是两种常用的同步工具,用于多线程之间的协调和控制。 1. CountDownLatch Coun 矫情吗;*/ 2024年09月20日 06:33/ 0 赞/ 9 阅读
相关 多线程与同步工具:CountDownLatch使用示例 `CountDownLatch`是Java并发工具包(java.util.concurrent)中的一个类,主要用于控制多个线程的执行顺序。 以下是一个简单的`CountDo Myth丶恋晨/ 2024年09月15日 03:33/ 0 赞/ 12 阅读
相关 Java并发编程:CountDownLatch和Semaphore使用示例 在Java并发编程中,`CountDownLatch`和`Semaphore`都是用于控制多个线程并发执行的工具。 1. CountDownLatch: - 当一个或多 ╰半夏微凉°/ 2024年09月15日 03:21/ 0 赞/ 17 阅读
相关 Java并发工具库:CountDownLatch、Semaphore和CyclicBarrier使用示例 Java的并发工具库包括`CountDownLatch`,`Semaphore`和`CyclicBarrier`。这些类帮助我们管理多线程环境中的资源共享和同步。 以下是这几 傷城~/ 2024年09月10日 16:45/ 0 赞/ 23 阅读
相关 并发工具使用【CountDownLatch,CyclicBarrier】--代码示例 1.CountDownLatch 的使用 应用场景: 等待已知数量的线程执行完后 ,在唤醒当前的主线程的应用场景,比如:查询所有航空公司的机票,多个线程... ﹏ヽ暗。殇╰゛Y/ 2024年04月18日 11:14/ 0 赞/ 32 阅读
相关 CountDownLatch使用 CountDownLatch使用 一、CountDownLatch介绍 1) CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它 阳光穿透心脏的1/2处/ 2022年07月16日 23:11/ 0 赞/ 171 阅读
相关 CountDownLatch 使用示例 简单介绍下使用CountDownLatch 的使用方法 CountDownLatch 是在开始指定线程数,然后通过 latch.countDown();终止一次线程数-1, 朴灿烈づ我的快乐病毒、/ 2022年06月15日 04:13/ 0 赞/ 191 阅读
相关 CountDownLatch 使用示例 简单介绍下使用CountDownLatch 的使用方法 CountDownLatch 是在开始指定线程数,然后通过 latch.countDown();终止一次线程数-1, 向右看齐/ 2022年04月06日 06:40/ 0 赞/ 194 阅读
相关 CountDownLatch使用 CountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此 比眉伴天荒/ 2021年09月30日 02:30/ 0 赞/ 296 阅读
还没有评论,来说两句吧...