java 多线程之ThreadPoolExecutor参数设置

本文介绍了Java中的ThreadPoolExecutor线程池,详细解析了构造参数corePoolSize、workQueue和maximumPoolSize之间的关系。当线程数量、任务队列与新任务交互时,线程池如何决定是否创建新线程或拒绝任务。同时,文章还探讨了不同类型的线程池及其与ThreadPoolExecutor的联系。
摘要由CSDN通过智能技术生成

1参数介绍:

java1.5引入的ThreadPoolExecutor,构造参数中有如下几个参数。

参数名 作用
corePoolSize 核心线程池大小
maximumPoolSize 最大线程池大小
keepAliveTime 线程池中超过corePoolSize数目的空闲线程最大存活时间;可以allowCoreThreadTimeOut(true)使得核心线程有效时间
TimeUnit keepAliveTime时间单位
workQueue 阻塞任务队列
threadFactory 新建线程工厂
RejectedExecutionHandler 当提交任务数超过maxmumPoolSize+workQueue之和时,任务会交给RejectedExecutionHandler来处理


corePoolSize》workQueue》

Java多线程参数设置包括线程池的七大参数,其中包括corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory和handler。下面是这些参数的详细介绍: 1. corePoolSize:核心线程数,即线程池中一直保持的线程数,即使它们处于空闲状态。如果提交的任务数大于corePoolSize,线程池就会创建新的线程来处理任务,直到线程数达到maximumPoolSize。 2. maximumPoolSize:线程池中允许的最大线程数。如果提交的任务数大于maximumPoolSize,线程池就会拒绝处理任务并抛出异常。 3. keepAliveTime:线程池中空闲线程的存活时间。如果线程池中的线程数大于corePoolSize,那么当线程空闲时间达到keepAliveTime时,多余的线程就会被销毁直到只剩下corePoolSize个线程为止。 4. unit:keepAliveTime的时间单位,可以是秒、毫秒、微秒等。 5. workQueue:任务队列,用于保存等待执行的任务。常用的有ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等。 6. threadFactory:线程工厂,用于创建新的线程。可以自定义线程工厂来设置线程的名称、优先级等属性。 7. handler:拒绝策略,用于处理无法处理的任务。常用的有AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy、DiscardPolicy等。 下面是一个示例代码,演示如何设置线程池参数: ```java ThreadPoolExecutor executor = new ThreadPoolExecutor( 2, // corePoolSize 4, // maximumPoolSize 60, // keepAliveTime TimeUnit.SECONDS, // unit new ArrayBlockingQueue<Runnable>(10), // workQueue Executors.defaultThreadFactory(), // threadFactory new ThreadPoolExecutor.AbortPolicy() // handler ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值