首页 > 编程语言 >Java ThreadPoolTaskExecutor 线程池的常见问题

Java ThreadPoolTaskExecutor 线程池的常见问题

时间:2023-03-21 17:11:30浏览次数:46  
标签:常见问题 队列 核心 -- 任务 线程 默认值 ThreadPoolTaskExecutor

Java ThreadPoolTaskExecutor 线程池的常见问题

 https://blog.csdn.net/weixin_43611528/article/details/123083314

 

重要参数
corePoolSize:核心线程数,常开的线程数,默认值:1。需注意:如果设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭直到关闭为0
queueCapacity:阻塞队列(任务队列),需注意spring的默认值是Integer.MAX_VALUE,必须要手动修改,否则如果任务过多可能会造成服务的OOM
maxPoolSize:最大线程数,默认值是Integer.MAX_VALUE
拒绝策略
具体使用哪种策略需要基于实际业务情况选择
AbortPolicy():该策略是线程池的默认策略,如果线程池队列满了丢掉这个任务并且抛出RejectedExecutionException异常。
DiscardOldestPolicy():丢弃队列中最老的任务,队列满了,会将最早进入队列的任务删掉腾出空间,再尝试加入队列
DiscardPolicy():如果线程池队列满了,会直接丢掉这个任务并且不会有任何异常
CallerRunsPolicy():交由调用方线程运行,比如 main 线程;如果添加到线程池失败,那么主线程会自己去执行该任务,不会等待线程池中的线程去执行
任务执行和线程创建策略
优先使用核心线程数-->>核心线程数不足-->>放入阻塞队列-->>当阻塞队列满的情况下-->>开启新的线程执行任务,直到线程数=最大线程数-->>当线程数达到最大线程数时-->>基于设置的拒绝策略处理新的任务

核心线程数怎么设置
分IO密集还是CPU密集(不是绝对的,是基于经验设置)
CPU密集设置为跟核心数一样大小

IO密集型设置为2倍CPU核心数(一般服务都是IO密集型) 

标签:常见问题,队列,核心,--,任务,线程,默认值,ThreadPoolTaskExecutor
From: https://www.cnblogs.com/kelelipeng/p/17240651.html

相关文章

  • jumpserver 常见问题处理
    目录jumpserver常见问题处理账号密码类用户点击登录资产时没有可选账号登录jumpserver常见问题处理账号密码类用户点击登录资产时没有可选账号登录权限管理-资产授权......
  • 【python】多线程并发,rpc接口性能测试
    1、官方文档https://docs.python.org/3/library/concurrent.futures.html 2、安装python3.x中自带了concurrent.futures模块python2.7需要安装futures模块,使用命令......
  • 【超详细】Ubuntu 20.04 安装 Apache+PHP网页环境 图文教程,常见问题和解决方案
    本文将介绍在Ubuntu20.04LTS环境下安装Apache的全过程,针对其中可能出现的一些坑也会提供解决方案。......
  • 面试常考:C#用两个线程交替打印1-100的五种方法
      "C#用两个线程交替打印1-100的五种方法"是.NET工程师面试多线程常考的试题之一,主要考察对C#语法和对多线程的熟悉程度。本文将用5种方法实现这个面试题。方法1:使用M......
  • javaSE-day12(多线程)
    1.多线程的常用方法Thread提供了很多与线程操作相关的方法方法:publicvoidrun():线程的任务方法publicvoidstart():启动线程publicStringgetName():获取当前......
  • C++温故补缺(十五):多线程
    多线程参考:CSDN,知乎传统C++(C++11之前)中并没有引入线程的概念,如果想要在C++中实现多线程,需要借助操作系统平台提供的API,如Linux的<pthread.h>,或windows下的<windows.......
  • Java EasyExcel带格式多线程导出百万数据
     JavaEasyExcel带格式多线程导出百万数据1.背景说明2.方案概述(1)大数据量导出问题主要是以下三个地方:(2)将写入导出Excel等功能单独分开成一个微服务:(3)注意:(4)方......
  • Java 线程通信
    相信大家在实际工作中,都或多或少了解过生产者消费者模型,在一些基于内存进行设计的消息队列模型中,当有新消息写入的时候,消息会被投递到一条内存队列中,然后消费者会自动收到......
  • Lniux有关python多线程的历史
    在内核2.6以前的调度实体都是进程,内核并没有真正支持线程。它是能过一个系统调用clone()来实现的,这个调用创建了一份调用进程的拷贝,跟fork()不同的是,这份进程拷贝完全共......
  • 多线程面试——CountDownLatch,CyclicBarrier,Semaphore
    0.总结1.CountDownLatch是1个线程等待其他线程,CyclicBarrier是多个线程相互等待;2.CountDownLatch是计数-1,直到减为0,CyclicBarrier是计数+1,直到达到指定值;3.CountDownLatch......