# CountDownLatch demo演示数据分片多线程处理
package com.example.core.mydemo; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor; /**
* 打印结果:
* begin
* 当前线程名称=pool-1-thread-1
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-2
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-5
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-6
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-7
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-3
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-4
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-8
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-9
* 业务逻辑多线程处理,可以按数据集合分片来处理
* 当前线程名称=pool-1-thread-10
* 业务逻辑多线程处理,可以按数据集合分片来处理
* finish
*
*
* 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
* 用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。
*/
public class CountDownLatchTest {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(10); //splitLists 按集合来多线程处理数据
//通过CountDownLatch 的使用 我们控制了线程的执行顺序
CountDownLatch countDownLatch = new CountDownLatch(10); System.out.println("begin");
for(int i= 0;i < 10; i++){
// System.out.println("i=" + i);
executorService.submit(() -> {
System.out.println("当前线程名称=" + Thread.currentThread().getName()); try {
//todo
System.out.println("业务逻辑多线程处理,可以按数据集合分片来处理");
} catch (Exception e) {
e.printStackTrace();
} finally {
countDownLatch.countDown();
System.out.println("countDown-" + Thread.currentThread().getName());
}
});
} // 等待所有线程完毕
try {
//await() 方法具有阻塞作用
countDownLatch.await();
System.out.println("finish");
} catch (InterruptedException e) {
e.printStackTrace();
} //结束
executorService.shutdown(); }
}

CountDownLatch demo演示数据分片多线程处理的更多相关文章

  1. 实时更新数据的jQuery图表插件DEMO演示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  3. 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示

    前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...

  4. 【原创】NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示

    申明:本文由作者基于日常实践整理,希望对初次接触MINA.Netty的人有所启发.如需与作者交流,见文签名,互相学习. 学习交流 更多学习资料:点此进入 推荐 移动端即时通讯交流: 215891622 ...

  5. 项目一:第十一天 2、运单waybill快速录入 3、权限demo演示-了解 5、权限模块数据模型 6、基于shiro实现用户认证-登录(重点)

    1. easyui DataGrid行编辑功能 2. 运单waybill快速录入 3. 权限demo演示-了解 4. Apache shiro安全框架概述 5. 权限模块数据模型 6. 基于shiro ...

  6. ShardingSphere数据分片

    码农在囧途 坚持是一件比较难的事,坚持并不是自欺欺人的一种自我麻痹和安慰,也不是做给被人的,我觉得,坚持的本质并没有带着过多的功利主义,如果满是功利主义,那么这个坚持并不会长久,也不会有好的收获,坚持 ...

  7. HTML5火焰文字特效DEMO演示

    效果展示:http://hovertree.com/texiao/html5/26/ 效果图: 扫描二维码查看效果:

  8. 适应手机端的jQuery图片滑块动画DEMO演示

    在线预览 下载地址 实例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  9. HTML5火焰文字特效DEMO演示---转载

    只有google支持 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  10. MyCat 学习笔记 第十二篇.数据分片 之 分片事务处理

    1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150:  330 ...

随机推荐

  1. 【ESSD技术解读-04】ESSD Auto PL规格,引领IO性能弹性新方向

    ​简介: 阿里云 ESSD 为云服务器 ECS 提供低时延.持久性和高可靠的块存储服务,成为云厂商全闪块存储的业界标杆.存储团队推出了 ESSD Auto PL 新的云盘规格,把性能与容量解耦,提供 ...

  2. [DApp] ethers.js VS Moralis

    ether.js 是 Web3 封装的 js 库,特别适合以太坊平台. Moralis 不仅是 Web3 的封装,还是一体化解决方案,包括服务端部署方案和适配各种链,使用范围更广. 在选择上,主要还是 ...

  3. docker容器资源配额

    1.docker 容器控制CPU docker通过cgroup来控制容器使用的资源限制,可以对docker限制的资源包括cpu.内存.磁盘 1.1 指定docker容器可以使用的cpu份额 # 查看配 ...

  4. 8、shell 脚本

    1.shell 脚本基础 作用:介于系统内核与用户之间,负责解释命令行 1.1.第一个 shell 脚本 vim first.sh cd /boot/ pwd ls -lh vml*z 赋予可执行权限 ...

  5. homebrew的安装和使用

    目录 背景 安装xcode 安装homebrew 有关报错解决 卸载脚本 homebrew软件搜索 brew 常用命令 brew redis安装 PhpWebStudy安装 安装php 背景 最近用b ...

  6. golang cron定时任务简单实现

    目录 星号(*) 斜线(/) 逗号(,) 连字符 (-) 问好 (?) 常用cron举例 使用说明 golang 实现定时服务很简单,只需要简单几步代码便可以完成,不需要配置繁琐的服务器,直接在代码中 ...

  7. 简易版跳板机-teleport使用

    目录 1 环境搭建 2 teleport工具搭建 3 teleport使用示例 3.1 资产管理-添加主机 3.2 资产管理-添加账号 3.3 创建用户 3.4 运维授权 3.5 安装客户端助手 3. ...

  8. LVS负载均衡(5)-- LVS持久连接

    持久连接: 持久连接用于实现无论使用任何调度算法,在一段时间内(默认300s ),能够实现将来自同一个地址的请求始终发往同一个RS. 语法格式: ipvsadm -A|E -t|u|f service ...

  9. 如果win报错无法加载文件 C:\Users\xx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本

    点击查看代码 Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

  10. C语言:将字符逆反排列再输出的问题

    代码: #include<stdio.h> #define N 10 int main() { /*输入字符串,str[10],将里面的字符逆反排列,再输出.*/ char ch[N]; ...