首页 > 其他分享 >线程池的执行流程是什么?(核心参数、执行流程、拒绝策略)

线程池的执行流程是什么?(核心参数、执行流程、拒绝策略)

时间:2024-09-19 11:50:52浏览次数:12  
标签:策略 核心 流程 存活 任务 线程 执行 空闲

一、线程池的执行流程

1. 首先,向线程池提交一个线程任务,线程池会分配空闲线程去处理该线程任务。

2. 如果没有空闲线程就判断当前存活线程数是否超过核心线程数

        (1)没有超过就创建一个核心线程,处理线程任务。

        (2)超过核心线程数就将存活线程存放在工作队列中。

3. 如果工作队列满了,就要判断当前存活线程数是否超过最大线程数

        (1)没超过就创建非核心线程去处理线程任务,用完回收。

        (2)超过最大线程数就直接执行拒绝策略

 

 二、线程池的核心参数

  • 核心线程数 : corePoolSize
  • 工作队列 : workQueue
  • 最大线程数 : maxinumPoolSize
  • 非核心线程线程空闲的存活时间及单位 :  keepAliveTime 和 unit
  • 线程工厂 : threadFactory
  • 拒绝策略 : handler

三、线程池的拒绝策略 

  • AbortPolicy : 丢弃任务,并抛出异常(RejectedExecutionException)
  • DiscardPolicy: 只丢弃任务,不抛出异常
  • DiscardOldestPolicy: 只丢弃最老(末尾)的任务,重新将当前任务提交给线程池处理
  • CallerRunsPolicy: 直接运行run()方法
  • 自定义决绝策略

标签:策略,核心,流程,存活,任务,线程,执行,空闲
From: https://blog.csdn.net/weixin_65978343/article/details/142351802

相关文章

  • 怎么办?用DolphinScheduler调度执行复杂的HiveSQL时无法正确识别符号
    在使用ApacheDolphinScheduler调度执行复杂的HiveSQL时,HQL包含多种海豚无法正确识别的符号,怎么办?本文提供了可行的思路和方法,供用户参考。一、目的在Hive中完成复杂JSON,既有对象还有数组而且数组中包含数组的解析后,原本以为没啥问题了,结果在DolphinScheduler中调度又出现了大问......
  • 《深入理解 Java 线程池:高效管理线程的利器》
    线程池1.什么是线程池?​线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或者放入队列(工作队列)中等待。2.线程池常用类和接口​在Java标......
  • MySQL 子查询全解析:执行、性能影响与优化策略
    在MySQL数据库的操作中,子查询是一个强大而又复杂的工具。今天,我们就来深入探讨MySQL如何执行子查询、其性能影响、优化方法以及哪些情况下应避免使用子查询。一、MySQL如何执行子查询非相关子查询非相关子查询也被称为独立子查询,它可以独立于外部查询进行执行。MyS......
  • 学习高校课程-软件工程-软件流程(ch3)
    3.1AGENERICPROCESSMODEL通用过程模型线性流和迭代流演化流和并行流3.2DEFININGAFRAMEWORKACTIVITY定义框架活动Whatactionsareappropriateforaframeworkactivity,giventhenatureoftheproblemtobesolved,thecharacteristicsofthepeopledoin......