private ThreadPoolExecutor createThreadPool(int poolSize, int queueSize) {
try {
int maxPoolSize = Runtime.getRuntime().availableProcessors() * 2;
if (poolSize > maxPoolSize) {
poolSize = maxPoolSize;
}
BlockingQueue<Runnable> queue = new ArrayBlockingQueue(queueSize);
ThreadFactory namedThreadFactory = (new ThreadFactoryBuilder()).setNameFormat("thread-call-runner-%d").build();
RejectedExecutionHandler policy = new ThreadPoolExecutor.DiscardPolicy();
ThreadPoolExecutor executorService = new ThreadPoolExecutor(poolSize, poolSize, 0L, TimeUnit.SECONDS, queue, namedThreadFactory, policy);
return executorService;
} catch (Exception var7) {
}
}
poolSize:线程运行的个数。
queueSize:队列阻塞的时候,队列的个数。
1、poolSize根据自己业务需求,看需要多少个线程。
需要考虑的有:a.多长时间必须要完成;b.运行服务器运行核心数,最好不要超过这个数量;
2、queueSize大小要根据最大的线程数
需要考虑就是整个业务最大,一定要考虑最大会出现多少,这个不宜过小。queueSize+poolSize就是业务最大线程。
小白笔记~仅供自己笔记
线程池配置与优化
1529





