碰到一个需求,大约有100多条的工作流需要同时执行,于是便想到了利用多线程来解决

代码如下

1、首先是创建线程池

ExecutorService executor = new ThreadPoolExecutor(50, //核心线程大小100, //线程池最大容量1000, //线程空闲时间TimeUnit.MILLISECONDS, //时间单位new LinkedBlockingQueue<>(), //任务队列;一个阻塞队列Executors.defaultThreadFactory(), //线程工厂new ThreadPoolExecutor.AbortPolicy() //线程拒绝策略);

2、创建一个线程类来执行一条工作流方法

class MyRunThread implements Runnable{//需要传递过来的属性private String data;public MyRunThread() {}public MyRunThread(String data) {this.data = data;}@Overridepublic void run() {//开工作流System.out.println(data);}
}

3、循环向线程池提交线程并执行

for (int i = 0; i <= 1000; i++) {//将需要的属性填充进MyRunThread线程类中executor.submit(new MyRunThread("" + i));}

4、最后关闭线程池

executor.shutdown();

结束

线程池的创建及使用案例相关推荐

  1. 线程池的创建及参数设置详解

    一. 常见线程池 线程池的创建方法主要有两类,第一是通过Executors 创建线程池,第二是通过 ThreadPoolExecutor 创建线程池. 首先我们来看通过Executors 创建的线程池 ...

  2. 谈谈java的线程池(创建、机制)

    目录 Executors创建线程池默认方法 自定义线程池 Executors创建线程池默认方法 newFixedThreadPool()方法,该方法返回一个固定数量的线程池,该方法的线程数始终不变,当 ...

  3. java(线程池的创建方式,和线程池的原理)

    1.为什么要使用线程池:   减少资源消耗,通过重复的使用已创建好的线程,避免了线程的频繁创建和销毁所造成的消耗 提高响应速度,当任务到达的时候,不需要再去创建,可以直接使用已经创建好的线程就能立即执 ...

  4. Java同步—线程池的创建和使用

    线程池 构建一个新的线程是有一定代价的,因为涉及到与操作系统的交互.如果程序中需要使用大量生命周期很短的线程,就应该使用线程池. 将Runnable对象交给线程池来执行,就会有一个线程调用run方法, ...

  5. JAVA线程池ThreadPoolExecutor创建以及各参数的详细说明

    最近把线程很多的东西都温故了一遍,发现还漏了个线程池,今天看了些线程池的文章,然后加入了自己的理解,总结如下 首先看下一个线程池的最简单的构造方法如下 * @param corePoolSize th ...

  6. Linux下通用线程池的创建与使用

    Linux下通用线程池的创建与使用 本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整 ...

  7. SpringBoot线程池的创建、@Async配置步骤及注意事项

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:Muscleheng blog.csdn.net/Muscl ...

  8. Spring Boot 线程池的创建、@Async 配置步骤及注意事项

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:终于放弃了单调的swagger-ui了,选择了这款神器-knife4j个人原创+1博客:点击前往,查看更多 作者 ...

  9. JUC多线程:线程池的创建及工作原理 和 Executor 框架

    一.什么是线程池: 线程池主要是为了解决 新任务执行时,应用程序为任务创建一个新线程 以及 任务执行完毕时,销毁线程所带来的开销.通过线程池,可以在项目初始化时就创建一个线程集合,然后在需要执行新任务 ...

最新文章

  1. 别只顾着写代码,学会这 25 条比涨工资都重要,你信不?
  2. matlab 二值化_MATLAB实验,图像二值化处理
  3. gentoo下使能subversion自动补全
  4. c#学习之基础篇(filter 筛选器)
  5. LeetCode Merge k Sorted Lists(有序单链表数组的合并)
  6. MySQL复制性能优化
  7. python 保存图片代码_最简单的selenium+Python自动右键保存图片
  8. 信息学奥数一本通(1170:计算2的N次方)
  9. 【工具使用系列】关于 MATLAB 神经网络故障诊断,你需要知道的事
  10. unity音效插件—— FMOD学习
  11. window使用fliqlo 教程
  12. 金蝶eas怎么引出凭证_如何引出会计分录序时簿?
  13. 路由器和交换机哪个更好?路由器交换机怎么连接?
  14. 计算机想ping一下网络,Ping命令以检测Windows7下的计算机网络速度
  15. 科技牛人:“别人家的孩子”牛在哪里!
  16. 达梦数据库DM8的DM管理工具manger命令行启动时出错Manager:10369的处理方法
  17. 天下武功,唯快不破 - O'Reilly Velocity China 2011 PPT汇总
  18. double team
  19. mysql 1045 远程_启用远程mysql连接:错误1045(28000):拒绝用户访问
  20. 关于Android短信拦截

热门文章

  1. vue css页面滚动,无滚动条, 实现顶部导航固定,自适应布局 main标签+calc()
  2. 【附源码】Java计算机毕业设计儿童早教课程管理系统论文2022(程序+LW+部署)
  3. 03:requests与BeautifulSoup结合爬取网页数据应用
  4. 自适应滤波器:最小均方误差(LMS)滤波器
  5. mac pro教你一步步安装redis服务
  6. 先验分布:(三)Dirichlet分布的应用——LDA模型
  7. EasyExcel导出excel合并表头和数据
  8. POJ3243 Clever Y 解 高次同余方程
  9. Microsoft Visual Studio C++开发环境的配置及使用
  10. c语言判断顺序链表是否为空,数据结构之线性表(五)——单链表(2 初始化,判断空表,销毁,清空,求表长)...