# 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. WPF 对接 Vortice 绘制 WIC 图片

    本文告诉大家如何通过 Vortice 在 Direct2D 里面绘制图片,图片的来源是 WIC 加载出的图片 在上一篇博客 WPF 对接 Vortice 调用 WIC 加载图片 告诉了大家如何对接 V ...

  2. dotnet SemanticKernel 入门 调用原生本机技能

    本文将告诉大家如何在 SemanticKernel 里面调用原生本机技能,所谓原生本机技能就是使用 C# 代码编写的原生本地逻辑技能,这里的技能可讲的可不是游戏角色里面的技能哈,指的是实现某个功能的技 ...

  3. 关于多个 Cookie 的分隔符这件事

    对于 Cookie 的处理上,我最近遇到一个问题,那就是如何分割 Cookie 的内容.有人说是使用逗号分割,有人说是使用分号分割,究竟用哪个才是对的?其实这个答案是需要分为两个过程,分别是请求和响应 ...

  4. Codeforces Round 934 2D/1B

    Link 场上思路出的最快的一题,但没调出来. 反着考虑全为回文串需满足哪些情况. 若 \(k = 1\),没有限制条件. 若 \(k = 2\),对于任意三个位置 _ _ _,先填 \(x\) \( ...

  5. 【股票爬虫教程】我用100行Python代码,爬了雪球网5000只股票,还发现一个网站bug!

    目录 一.爬取目标 二.分析网页 三.爬虫代码 四.同步视频 五.get完整源码 一.爬取目标 您好,我是@马哥python说,今天继续分享爬虫案例. 爬取网站:雪球网的沪深股市行情数据 具体菜单:雪 ...

  6. iptables命令详解

    安装iptables yum install iptables-services 编写允许访问的策略 vim /etc/sysconfig/iptables # sample configuratio ...

  7. Ubuntu的apt-get/yarm/wget命令详解

    目录 一.查看本机是否安装软件 二.apt-get 三.yum 四.wget apt-cache和apt-get是apt包的管理工具, 他们根据/etc/apt/sources.list里的软件源地址 ...

  8. windows下安装Psycopg2,用于python连接postgresql

    1.首先,下载Windows版的Psycopg2.进入https://pypi.python.org/pypi/psycopg2/ ,在下载文件列表中选择psycopg2-2.7.4-cp33-cp3 ...

  9. NumPy 数组复制与视图详解

    NumPy 数组的复制与视图 NumPy 数组的复制和视图是两种不同的方式来创建新数组,它们之间存在着重要的区别. 复制 复制 会创建一个包含原始数组相同元素的新数组,但这两个数组拥有独立的内存空间. ...

  10. C语言:窗口控制台颜色改变(不断换色)

    了解了stdlib头文件中的system 函数之后突发奇想想要做一个蹦迪效果后台 代码如下: #include <stdio.h> #include <stdlib.h> #i ...