java多线程——Executors线程池的四种用法简单解析
1、Executors.newFixedThreadPool(5) 是创建一个线程池,池子里面有5个线程,任务数多余5个时,超出的任务队列中排队等候执行
2、Executors.newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
3、Executors.newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
注::FIFO: 全称First in, First out,先进先出。 LIFO: 全称Last in, First out,后进先出。
importjava.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;/*** @author liugao* * 2018年6月8日-上午10:18:15*/
public class ThreadPoolTest {/*** @param args*/public static void main(String[] args) {
// ExecutorService threadPool = Executors.newCachedThreadPool();
// ExecutorService threadPool = Executors.newSingleThreadExecutor();ExecutorService threadPool = Executors.newFixedThreadPool(5);// 创建一个线程池for (int i = 0; i < 10; i++) {final int task = i;threadPool.execute(new Runnable() { //往池子里面丢10次任务@Overridepublic void run() {for (int j = 0; j <= 3; j++) {System.out.println("当前线程名:"+ Thread.currentThread().getName()+"####当前任务是:"+ task);}}});}threadPool.shutdown();}}
线程池用完之后记得shutdown
4、Executors.newScheduledThreadPool(2); 可以延迟执行,除了延迟执行外,跟newFixedThreadPool基本一样
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /*** @author liugao* * 2018年6月8日-上午10:18:15*/ public class ThreadPoolTest { /** * @param 6秒后炸一次,之后每隔2秒炸一次 */ public static void main(String[] args) { ScheduledExecutorService ScheduledThreadPool = Executors.newScheduledThreadPool(2); ScheduledThreadPool.scheduleAtFixedRate(new Runnable() { @Override public void run() { System.out.println("booming!"); } }, 6, 2, TimeUnit.SECONDS); } }
当第一个任务执行完成之后,延迟指定时间再开始执行第二个任务
java多线程——Executors线程池的四种用法简单解析相关推荐
- 第二十八期:Java线程池的四种用法与使用场景
线程池的作用主要是为了提升系统的性能以及使用率.文章刚开始就提到,如果我们使用最简单的方式创建线程,如果用户量比较大,那么就会产生很多创建和销毁线程的动作,这会导致服务器在创建和销毁线程上消耗的性能可 ...
- java assert使用场景_Java线程池的四种用法与使用场景
一.如下方式存在的问题 new Thread() { @Override public void run() { // 业务逻辑 }}.start(); 1.首先频繁的创建.销毁对象是一个很消耗性能的 ...
- newsinglethreadexecutor使用场景_Java线程池的四种用法与使用场景
来源公众号一个程序员的成长 ,作者小涛 一.如下方式存在的问题 new Thread() { @Override public void run() { // 业务逻辑 }}.start(); 1.首 ...
- Java线程池的四种创建方式
Java线程池的四种创建方式 Java使用Thread类来表示线程,所有的线程都是Thread类或者是他的子类.Java有四种方式来创建线程. (1)继承Thread类创建线程 (2)实现Runnab ...
- Java多线程之线程池的手写改造和拒绝策略
Java多线程之线程池的手写改造和拒绝策略 目录 自定义线程池的使用 四种拒绝策略代码体现 1. 自定义线程池的使用 自定义线程池(拒绝策略默认AbortPolicy) public class My ...
- Java多线程之线程池7大参数、底层工作原理、拒绝策略详解
Java多线程之线程池7大参数详解 目录 企业面试题 线程池7大参数源码 线程池7大参数详解 底层工作原理详解 线程池的4种拒绝策略理论简介 面试的坑:线程池实际中使用哪一个? 1. 企业面试题 蚂蚁 ...
- java多线程及线程池使用
Java多线程及线程池的使用 Java多线程 一.Java多线程涉及的包和类 二.Java创建多线程的方式 三.Java线程池 1. 创建线程池ThreadPoolExecutor的7个参数 2. 线 ...
- Java多线程之线程池详解
Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...
- java多线程之线程池简介
前言 池化技术已经屡见不鲜了,比如数据库连接池,大家的项目中应该也用到了线程池.池化技术的好处:降低资源的消耗,提高响应速度,提高线程的可管理性.本篇主要是和大家一起分析下线程池的架构和它的工作流程. ...
最新文章
- android浮动文本,android – 如何将文本添加到浮动操作按钮?
- jtree 默认展开树的全部节点
- 如何自动播放光盘、解决win7电脑不能播放光盘
- 【算法学习笔记】堆排序和归并排序、其他几种排序的代码实现、比较和应用(习题)
- python入门系列:深入Python的set和dict
- C语言 共用体/联合体 union
- 一篇文章带你领悟 Frida 的精髓(基于安卓8.1)
- 《论道HTML5》内容技术分享活动
- org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
- 1.7_heap_sort_堆的向下调整堆排序
- Pulsar:一款功能强大的可视化网络足迹扫描平台
- WPF:新手入门教程
- malloc函数的使用
- PassMark PerformanceTest v10.1.1004 电脑性能测试工具直装版
- 香港地区Airbnb数据可视化分析
- 机器学习入门之:使用 scikit-learn 决策分类树来预测泰坦尼克号沉船生还情况
- 18个最好的代码编辑器/IDE工具,希望你会喜欢。
- 富文本编辑器:ckeditor(使用官网下载包)
- 【苹果相册】苹果推从新建的私钥CSR文件Profile还分为开发和分发
- 美业SaaS的创业分享之[定位]:美业SaaS的定位到底是工具还是平台
热门文章
- 68-C语言-打鱼晒网问题
- java实现银行新用户现金业务办理(数据库)
- GitHub 优秀的 Android 开源项目 - 让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) - 博客频道 - CSDN.NET
- 成为阿里P7移动架构师到底有多难?享学课堂java架构师
- 浏览器,服务器,浏览器和服务器之间的通信协议
- C语言KR习题系列——统计一段文字中各个字母出现的频率
- 数据结构课程设计-班级考勤管理系统
- 复习一周,京东+百度一面,不小心都拿了Offer
- win7 pdf图标显示错误的解决办法
- 顶会论文 | 阿里云视频摘要SOTA模型:用于视频摘要的多层时空网络