首页 > 其他分享 >线程池问题记录以及处理

线程池问题记录以及处理

时间:2023-07-25 18:12:24浏览次数:41  
标签:java 记录 处理 util concurrent 线程 CompletableFuture ThreadPoolExecutor

现象

每天到业务高峰期就会出现提交线程被拒绝。

疑问点

什么原因会导致active threads远远小于poolsize的情况下,提交任务失败

关键信息

线程池配置

ExecutorService aService = new ThreadPoolExecutor(
                130
                , 300
                , 60L
                , TimeUnit.SECONDS
                , new LinkedBlockingQueue<>(10)
                , new ThreadFactoryBuilder().setNameFormat("aService-pool-%d").build()
                , new ThreadPoolExecutor.AbortPolicy()
        );

拒绝任务的日志信息

java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply@4e4dd145 
rejected from java.util.concurrent.ThreadPoolExecutor@5c39c043[Running, pool size = 300, active threads = 4, queued tasks = 8, completed tasks = 3851427]
	at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2065) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:833) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1365) ~[?:?]
	at java.util.concurrent.CompletableFuture.asyncSupplyStage(CompletableFuture.java:1782) ~[?:?]
	at java.util.concurrent.CompletableFuture.supplyAsync(CompletableFuture.java:2005)

其他信息

  1. 这个线程池在使用时存在父子线程都使用的情况,这个用法本身有问题。
  2. 从监控来看,java.util.concurrent.ThreadPoolExecutor#getActiveCount 指标最高到40;而 java.util.concurrent.ThreadPoolExecutor#getPoolSize 指标已到高峰期就保持在300

解决方案

目前还有解决,待续

标签:java,记录,处理,util,concurrent,线程,CompletableFuture,ThreadPoolExecutor
From: https://www.cnblogs.com/yansq0/p/17580498.html

相关文章

  • 线程池
    线程池的组成1、线程管理器(ThreadPool)2、工作线程(PoolWorker)3、任务接口(Task)4、任务队列(taskQueue)初始化参数corePoolSize:核心线程数maxmumPoolSize:最大线程数keepAliveTime和TimeUnit:空闲线程存活时间及单位workQueue:工作队列,必须是BlockingQueue常见线程池newCachedThreadPool(......
  • 鸟哥的Linux私房菜学习记录
    第零章引入Linux操作系统的概念和背景,介绍了Linux的起源和发展历程,Linux的开源特性使得众多开发者能够共同参与其开发和改进,从而造就了Linux庞大而强大的生态系统。Linux的基本特点,Linux是一个多用户、多任务、多线程的操作系统,它具有稳定性、安全性和灵活性等突出优势Linux的......
  • 记录使用HPSocket.NET包开发WebSocket通讯,报错Could not decode a text frame as UTF-
    因工作需要开发Scada系统,使用到WebSocket通讯,网页客户端接收数据时发生CouldnotdecodeatextframeasUTF-8报错 通过网络检索,有多种说法,验证如下1、文本针和二进制针的数据发送方式都测试失败1stringkson=JsonConvert.Serialize......
  • vba-常用代码记录
    一些代码优化:1.Range("B5:C6").CopyDestination:=Range("B8")2.使用mid$函数而不是mid3.把整个sheet保护,需要操作时,后台先关闭保护。4.Excel中自带的Sum函数是将整个区域转换为数组,在内存中进行求和,速度快多了。DimresultAsDoubleresult=Application.Worksh......
  • Lightroom Classic 2023 - 照片后期处理软件mac/win版
    LightroomClassic2023是一款专业的数字照片管理和后期处理软件。它提供了一系列强大的工具和功能,帮助摄影师和创意艺术家对照片进行组织、编辑和优化。→→↓↓载LightroomClassic2023mac/win版 LightroomClassic2023具有直观的用户界面,使得用户能够轻松浏览和管理他......
  • SQL 语句获取数据库各表分配空间、占用空间、记录行数
    SELECT    t.NAME AS TableName,    s.Name AS SchemaName,    p.rows AS RowCounts,    SUM(a.total_pages)*8 AS TotalSpaceKB,    CAST(ROUND(((SUM(a.total_pages)*8)/1024.00),2) AS NUMERIC(36,2)) AS TotalSpaceMB,    SUM(a.......
  • java多线程内存图
    多线程的例子例一:publicclassTest{publicstaticvoidmain(String[]args)throwsException{Threadx1=newThread(){@Overridepublicvoidrun(){for(inti=0;i<100;i++){Syst......
  • 【d2l 问题记录】【1】 视频55 从零实现rnn
    H,=state这句代码我真是看懵逼了。1元组的打包和解包左边的参数数量要和右边元组里的元素数量一致参考:https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences2单元素元组的打包和解包参考:https://blog.csdn.net/Aaron_neil/article/details/......
  • 详解Python图像处理Pillow库
    在Python的图像处理领域,Pillow是一个强大而广泛使用的第三方库。它提供了丰富的图像处理功能,包括打开、保存、调整大小、裁剪、旋转等操作。本文将详细介绍Pillow库的使用方法,并通过代码示例进行讲解,帮助你理解和应用Pillow库进行图像处理。一、安装和导入Pillow库在使用Pillo......
  • 线程
     publicstaticvoidCallToChildThread(){try{Console.WriteLine("执行子程序");intsleepfor=5000;Thread.Sleep(sleepfor);Console.WriteLine($"暂停{sleepf......