线程池策略

corePoolSize:核心线程数;maximunPoolSize:最大线程数
每当有新的任务到线程池时,
第一步: 先判断线程池中当前线程数量是否达到了corePoolSize,若未达到,则新建线程运行此任务,且任务结束后将该线程保留在线程池中,不做销毁处理,若当前线程数量已达到corePoolSize,则进入下一步;
第二步: 判断工作队列(workQueue)是否已满,未满则将新的任务提交到工作队列中,满了则进入下一步;
第三步: 判断线程池中的线程数量是否达到了maxumunPoolSize,如果未达到,则新建一个工作线程来执行这个任务,如果达到了则使用饱和策略来处理这个任务。注意: 在线程池中的线程数量超过corePoolSize时,每当有线程的空闲时间超过了keepAliveTime,这个线程就会被终止。直到线程池中线程的数量不大于corePoolSize为止。
(由第三步可知,在一般情况下,Java线程池中会长期保持corePoolSize个线程。)

饱和策略

当工作队列满且线程个数达到maximunPoolSize后所采取的策略
AbortPolicy:默认策略;新任务提交时直接抛出未检查的异常RejectedExecutionException,该异常可由调用者捕获。
CallerRunsPolicy:既不抛弃任务也不抛出异常,使用调用者所在线程运行新的任务。
DiscardPolicy:丢弃新的任务,且不抛出异常。
DiscardOldestPolicy:调用poll方法丢弃工作队列队头的任务,然后尝试提交新任务
自定义策略:根据用户需要定制。

Java线程池核心线程数与最大线程数的区别相关推荐

  1. 【重难点】【JUC 05】线程池核心设计与实现、线程池使用了什么设计模式、要你设计的话,如何实现一个线程池

    [重难点][JUC 05]线程池核心设计与实现.线程池使用了什么设计模式.要你设计的话,如何实现一个线程池 文章目录 [重难点][JUC 05]线程池核心设计与实现.线程池使用了什么设计模式.要你设计 ...

  2. Java_Java多线程_Java线程池核心参数 与 手动创建线程池

    参考文章: 1.浅谈线程池ThreadPoolExecutor核心参数 https://www.cnblogs.com/stupid-chan/p/9991307.html 2.Java线程池 Thr ...

  3. 线程池核心线程数和最大线程数总结

    一.源码doc: java.util.concurrent public class ThreadPoolExecutor extends AbstractExecutorService 一个Exec ...

  4. 线程池详解和线程池核心数与最大线程数设置

    ThreadPool 为什么要用线程池 1.创建/销毁线程需要消耗系统资源,线程池可以复用已创建的线程. 2.控制并发的数量.并发数量过多,可能会导致资源消耗过多,从而造成服务器崩溃.(主要原因)可以 ...

  5. Java线程池参数、执行流程及线程数配置建议

    1. 线程池参数详解 corePoolSize:线程池中常驻核心线程数: maximumPoolSize:线程池能够容纳同时执行的最大线程数: keepAliveTime:多余的空闲线程存活时间: u ...

  6. 线程池核心数与最大线程数设置

    线程池核心数与最大线程数设置 总结: 核心线程 CPU密集型:核心线程数=CPU核心数(或 核心线程数=CPU核心数+1) I/O密集型:核心线程数=2*CPU核心数(或 核心线程数=CPU核心数/( ...

  7. 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )

    文章目录 一.线程池阻塞队列 二.拒绝策略 三.使用 ThreadPoolExecutor 自定义线程池参数 一.线程池阻塞队列 线程池阻塞队列是线程池创建的第 555 个参数 : BlockingQ ...

  8. java 线程工厂_Java并发编程:Java的四种线程池的使用,以及自定义线程工厂

    引言 通过前面的文章,我们学习了Executor框架中的核心类ThreadPoolExecutor ,对于线程池的核心调度机制有了一定的了解,并且成功使用ThreadPoolExecutor 创建了线 ...

  9. java线程池详解及五种线程池方法详解

    基础知识 Executors创建线程池 Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThrea ...

  10. 深入浅出吃透多线程、线程池核心原理及代码详解

    一.多线程详解 1.什么是线程 线程是一个操作系统概念.操作系统负责这个线程的创建.挂起.运行.阻塞和终结操作.而操作系统创建线程.切换线程状态.终结线程都要进行CPU调度--这是一个耗费时间和系统资 ...

最新文章

  1. 图解:轻松看懂机器学习十大常用算法
  2. 科大讯飞陶晓东:人工智能时代的医学影像 | CCF-GAIR 2017
  3. gcc/g++链接时.o文件及库的顺序问题
  4. POJ2536 二分图匹配
  5. 【Linux笔记(001) 】-- centos7 系统目录结构与文件
  6. 半潜式深海平台动力定位控制技术研究
  7. 分析单点登录cas的解决方式
  8. oracle 云 BI,[Oracle]见习BI工程师之函数
  9. c++中默认32位int类型转换截取高位部分
  10. 如何解决 SQL Server 安装程序中的 COM+ 系统配置检查失败问题
  11. LeetCode——1710. 卡车上的最大单元数
  12. UIPageControl 分页控件-IOS开发
  13. missfresh问题记录
  14. virtualbox--在win7设置ubuntu虚拟机网络
  15. 搭建Cocos2d-js开发环境(Window)
  16. 【Codeforces Round #422 (Div. 2) C】Hacker, pack your bags!(hash写法)
  17. c语言中文纠错,c语言纠错。。急急急。。
  18. Python + Excel | 可视化疫苗接种随时间变化情况
  19. Verilog HDL 语法学习笔记
  20. Spark First Sample Demo

热门文章

  1. iPhone必崩溃bug曝光
  2. 一套开源的网校系统,无论是自建网校还是接副业都很方便
  3. MATLAB 随机数
  4. c语言通讯录链表结构体排序,写个通讯录 想要简单就全用的是结构体数组要求改成用链表的...专业的朋友看能不能最简洁的改一下...
  5. 六、【服务器】基本概念-2-内存
  6. Windows10无法创建映射网络驱动器: 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的 来宾访问,这些策略可帮助保护你的电脑免受网络上不安全设备或者恶 意设备的威胁
  7. 2019工行天津分行暑期实习生(金融科技岗)面经
  8. 提高公文写作效率,可以采用模板和样例来辅助写作
  9. 设置echarts随页面大小变化自适应
  10. js相册特效带缩略图