java 自定义线程池参数怎么设置
时间: 2023-06-28 20:11:47 浏览: 136
Java中自定义线程池参数可以通过ThreadPoolExecutor类的构造方法来实现。具体来说,可以设置以下参数:
1. corePoolSize:线程池的核心线程数,即在没有任务需要执行时线程池的基本大小。默认值为1。
2. maximumPoolSize:线程池允许创建的最大线程数。当队列中的任务数量达到上限时,线程池会继续创建新的线程,直到达到该最大值。默认值为Integer.MAX_VALUE。
3. keepAliveTime:线程池中的线程空闲时间超过该值时,多余的线程会被销毁。默认值为0,表示当线程池中的线程空闲时立即销毁。
4. unit:keepAliveTime的时间单位,默认为TimeUnit.MILLISECONDS。
5. workQueue:任务队列,用于存储等待执行的任务。常见的有ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等。
6. threadFactory:线程工厂,用于创建新的线程。默认为Executors.defaultThreadFactory()。
7. handler:当线程池中的线程和队列都满了,新提交的任务会由RejectedExecutionHandler来处理。常见的有ThreadPoolExecutor.AbortPolicy、ThreadPoolExecutor.CallerRunsPolicy、ThreadPoolExecutor.DiscardPolicy、ThreadPoolExecutor.DiscardOldestPolicy等。
以下是一个示例代码:
```
ThreadPoolExecutor executor = new ThreadPoolExecutor(
10, // corePoolSize
20, // maximumPoolSize
60, // keepAliveTime
TimeUnit.SECONDS, // unit
new ArrayBlockingQueue<>(100), // workQueue
Executors.defaultThreadFactory(), // threadFactory
new ThreadPoolExecutor.AbortPolicy() // handler
);
```
该示例代码中,线程池的核心线程数为10,最大线程数为20,空闲线程的存活时间为60秒,任务队列为ArrayBlockingQueue,队列容量为100,线程工厂为默认的Executors.defaultThreadFactory(),当线程池中的线程和队列都满了时,新提交的任务会被拒绝并抛出异常。
阅读全文