原文网址:Java线程池系列--线程池的种类(Executors的用法)_IT利刃出鞘的博客-CSDN博客

简介

说明

线程池是Java多线程常用的技术,本文介绍线程池的种类,用示例介绍其用法。

相关网址

Java多线程--阻塞队列(BlockingQueue)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

常见线程池种类

种类

核心线程数

最大线程数

队列长度

描述

固定大小(fixed)

n

n(虽然有但实际不起作用)

无限

单个(single)

1

1

无限

只一个线程在工作,相当于单线程顺序串行执行所有任务。

定时(scheduled)

n

无限大

无限

周期性执行任务

缓存(cached)

0

无限大

0

动态增删线程数

创建的方法

方法

作用

说明

ThreadPoolExecutor参数

Executors.newFixed

ThreadPool

创建固定大小的线程池。

提交一个任务创建一个线程,直到最大数。

线程池数一旦达到最大值就会保持不变。

若某线程因异常而结束,会有新线程替代。

nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()

//nThreads是传进来的参数

Executors.newSingle

ThreadExecutor

创建一个单线程的线程池。

只一个线程工作,相当于单线程串行执行。

若此线程因异常而结束,会有新线程替代。

保证任务的执行顺序按任务提交顺序执行。

1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()

Executors.newScheduled

ThreadPool

创建一个固定大小的定时线程池。

支持定时以及周期性执行任务的需求。

corePoolSize, Integer.MAX_VALUE,

0, TimeUnit.NANOSECONDS,
new DelayedWorkQueue()

//corePoolSize是传进来的参数

Executors.newSingleThread

ScheduledExecutor

创建一个单线程的定时线程池。

支持定时以及周期性执行任务的需求。

return new DelegatedScheduledExecutorService

(newScheduledThreadPoolExecutor(1));

Executors.newCached

ThreadPool

创建一个可缓存的线程池。

若线程池的数量超过了处理任务所需要的线程,就回收部分空闲(默认60秒不执行任务)的线程。

当任务数增加时,此线程池又可以智能的添加新线程来处理任务。

0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>()

这些方法的返回值是ExecutorService对象,该对象表示一个线程池,可以执行Runnable对象或者Callable对象代表的线程。

固定大小(fixed)

简介

execute流程

上边是文章的部分内容,为便于维护,全文已迁移到此网址:Java线程池-种类(Executors的用法) - 自学精灵

Java线程池系列--线程池的种类(Executors的用法)相关推荐

  1. Java 数据持久化系列之池化技术

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 在上一篇文章Java 数据持久化系列之JDBC中,我们了解到使用 ...

  2. Java 数据持久化系列之 HikariCP (一)

    在上一篇<Java 数据持久化系列之池化技术>中,我们了解了池化技术,并使用 Apache-common-Pool2 实现了一个简单连接池,实验对比了它和 HikariCP.Druid 等 ...

  3. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  4. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  5. [Java高并发系列(5)][详细]Java中线程池(1)--基本概念介绍

    1 Java中线程池概述 1.1 什么是线程池? 在一个应用当中, 我们往往需要多次使用线程, 这意味着我们需要多次创建和销毁线程.那么为什么不提供一个机制或概念来管理这些线程呢? 该创建的时候创建, ...

  6. Java坑人面试题系列: 线程/线程池(高级难度)

    ExecutorService 接口及相关API细节详解. Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/qu ...

  7. Java线程池系列--饱和策略(拒绝策略)的使用(有实例)

    原文网址:Java线程池系列--饱和策略(拒绝策略)的使用(有实例)_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍Java线程池的饱和策略(拒绝策略). 概述 Java线程池的饱和策略如下: ...

  8. Java多线程系列 JUC线程池01 线程池框架

    转载  http://www.cnblogs.com/skywang12345/p/3509903.html 为什么引入Executor线程池框架 new Thread()的缺点 1. 每次new T ...

  9. Java高并发编程详解系列-线程池原理自定义线程池

    之前博客的所有内容是对单个线程的操作,例如有Thread和Runnable的使用以及ThreadGroup等的使用,但是对于在有些场景下我们需要管理很多的线程,而对于这些线程的管理有一个统一的管理工具 ...

最新文章

  1. 硬件加速_来试试微软神油灵不灵:更新驱动体验硬件加速GPU计划功能
  2. 亚马逊首席技术官预测2021年将改变世界的八大技术趋势
  3. (0041) iOS 开发之几家第三方即时通讯
  4. maven实战总结,工作中常见操作
  5. hashmap储存有向图_java-对后边缘进行运算以获取有向图中的循环数
  6. 国内视频云市场转入整合阶段
  7. Debug和Release 老程序啊 调试之前 区分一下啊
  8. vector 注意事项
  9. 郝斌 mysql_郝斌 SqlServer2005 学习笔记
  10. 基于ENVI进行遥感影像裁剪
  11. js实现数组翻转(倒序输出)
  12. selected和checked区别
  13. huobi API使用经验整理
  14. 迅速提高社群用户活跃度,需要怎么做?
  15. 天下武功无坚不破,唯快不破!
  16. 笔记系列---------sqlnet.ora维护
  17. 微信分享签名无效php_【求助】微信分享朋友圈失效
  18. 码分多址(CDMA)通信原理
  19. HDU 1512 Monkey King(左偏树+并查集)
  20. 如何开发在线教学系统,提供线上教学平台的解决方案

热门文章

  1. Reac全局管理redux
  2. 基于SSM的在线教育管理系统的设计与实现
  3. php使用curl请求时,以x-www-form-urlencoded 方式发送遇到的问题
  4. 魔众相册系统 v1.3.0 后台菜单快捷搜索 修复已知问题
  5. PI SXI_MONITOR查询的表
  6. 社交网络平台技术 考试卷
  7. 织梦自定义字段html,织梦模板调用自定义字段方法
  8. 高加水箱液位控制系统+MATLAB仿真
  9. 8月!校招提前批的黄金期和末尾期!
  10. 读博、求知与人生规划