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就是业务最大线程。
小白笔记~仅供自己笔记