CountDownLatch 多线程使用示例

场景描述:

模拟10个线程,并发执行,最后汇总结果

代码:

1package com.jf.service.market.impl; 2 3import java.util.concurrent.CountDownLatch; 4import java.util.concurrent.ExecutorService; 5import java.util.concurrent.Executors; 6 7public class CountDownLatchTest { 8 9 public static void main(String[] args) { 10 int num = 10; 11 long time = System.currentTimeMillis(); 12 ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); 13 final CountDownLatch latch = new CountDownLatch(num); 14 for (int i = 0; i < 10; i++) { 15 cachedThreadPool.execute(new Runnable() { 16 public void run() { 17 try { 18 Thread.sleep(1000); 19 } catch (InterruptedException e) { 20 e.printStackTrace(); 21 } 22 System.out.println(" End=== Thread:"+Thread.currentThread().getId()); 23 latch.countDown(); 24 } 25 }); 26 } 27 try { 28 latch.await(); 29 } catch (InterruptedException e) { 30 e.printStackTrace(); 31 } 32 System.out.println("总共耗时:" + (System.currentTimeMillis()-time)); 33 cachedThreadPool.shutdown(); 34 } 35}

结果展示:

 End=== Thread:10
 End=== Thread:15
 End=== Thread:17
 End=== Thread:16
 End=== Thread:14
 End=== Thread:13
 End=== Thread:12
 End=== Thread:9
 End=== Thread:11
 End=== Thread:18
总共耗时:1008

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java 线程篇 之CyclicBarrier、CountDownLatch、Semaphore

java提供了很多控制线程到达某一状态导致之前阻塞线程运行的函数,这些在控制任务执行提供了很大的便利,比如在zookper使用Semaphore实现分布式锁1、CountDownLatchcountDownLatch提供await(),CountDownLatch()来控制,前面我很多例子,使用这个来模拟多线程运行的,所以这里不过多介绍2

java并发中CountDownLatch的使用

java并发中CountDownLatch的使用在java并发中,控制共享变量的访问非常重要,有时候我们也想控制并发线程的执行顺序,比如:等待所有线程都执行完毕之后再执行另外的线程,或者等所有线程都准备好了才开始所有线程的执行等。这个时候我们就可以使用到CountDownLatch。简单点讲,CountDownLatch存有一个放在QueuedS