首页 > 其他分享 >说一下线程池内部工作原理(ThreadPoolExecutor)

说一下线程池内部工作原理(ThreadPoolExecutor)

时间:2023-03-17 23:13:41浏览次数:52  
标签:corePoolSize keepAliveTime 池里 队列 任务 线程 原理 ThreadPoolExecutor

ThreadPoolExecutor构造方法的参数

  • corePoolSize:线程池的核心线程数,说白了就是,即便是线程池里没有任何任务,也会有corePoolSize个线程在候着等任务。
  • maximumPoolSize:最大线程数,不管你提交多少任务,线程池里最多工作线程数就是maximumPoolSize。
  • keepAliveTime:线程的存活时间。当线程池里的线程数大于corePoolSize时,如果等了keepAliveTime时长还没有任务可执行,则线程退出。
  • unit:这个用来指定keepAliveTime的单位,比如秒:TimeUnit.SECONDS。
  • workQueue:一个阻塞队列,提交的任务将会被放到这个队列里。
  • threadFactory:线程工厂,用来创建线程,主要是为了给线程起名字,默认工厂的线程名字:pool-1-thread-3。
  • handler:拒绝策略,当线程池里线程被耗尽,且队列也满了的时候会调用。

线程池执行流程

任务被提交到线程池,会先判断当前线程数量是否小于corePoolSize,如果小于则创建线程来执行提交的任务,否则将任务放入workQueue队列,如果workQueue满了,则判断当前线程数量是否小于maximumPoolSize,如果小于则创建线程执行任务,否则就会调用handler,以表示线程池拒绝接收任务。

 

参考:

 

标签:corePoolSize,keepAliveTime,池里,队列,任务,线程,原理,ThreadPoolExecutor
From: https://www.cnblogs.com/xfeiyun/p/17228576.html

相关文章

  • clickhouse的数据存储原理
    ClickHouse是一个列式存储数据库,它的数据存储原理与传统的行式存储数据库有很大不同。以下是ClickHouse数据存储原理的一些关键点:列式存储:与行式存储数据库将数据按行存......
  • 进程和线程
    进程、线程1进程与线程的关系和区别什么是进程定义:进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程。进程是一个正在执行的程序的实例,包括程序......
  • RPC原理简析
    RPC作用是什么?通过动态代理和反射透明友好地调用远程服务器。即调用过程跟本地调用服务一致,让构建分布式应用、微服务更简单。为什么要用RPC?过去的Java应用一般采用Contro......
  • HTTPS原理解析
    我们用https的目的是什么?为了A端与B端互发的消息就算被拦截获取到也是加密了无法查看的,通用的加密/解密过程如下:以上的过程分析如下:1A端传入加密串"xx"进A端的加密方......
  • Scan时插入lockup latch的原理
     1. Scan中插入的lock_uplatch原理是什么呢?2. Lockuplatch的用法,看这个就够了......
  • 线程执行顺序
    线程执行顺序在做面试题的时候,发现有关线程执行顺序的一个常见考题:(纯纯考研审题)packagelink;publicclassTest{publicstaticvoidmain(String[]args){......
  • C# 多线程task
    C#多线程task1.异步和多线程的区别?没什么太大区别。异步是目的,使用多线程实现。想想AJAX异步加载,不就是不想让浏览器界面卡住嘛,所以在程序中对于某些单独的操作,比如写......
  • 【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议
    概念简介Paxos是一种基于消息传递具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。发展历史Paxos算法的发展历史追溯到古希腊,当时有......
  • R_2R电阻网络DAC原理分析
    DAC(DigitaltoAnalogConverter)是将数字信号变换为模拟信号的器件,在数字电路中得到广泛应用。数字电路中使用数字信号处理数据,可以使电路获得更高的抗干扰能力,同时数据......
  • 多线程 Task
    NetFramework4.0引入了一个新的关于异步操作的API,它叫做.任务并行库(TaskParallelLibrary,简称TPL),.NetFramework4.5版对该API进行了轻微的改进,使用更简单。TPL......