public class ExecutorPool {
/**
* 线程数(处理器个数)
*/
private static final Integer CORE_POOL_SIZE = Runtime.getRuntime().availableProcessors();
/**
* 线程池最大能创建的线程数目大小
*/
private static final Integer MAXIMUM_POOL_SIZE = Runtime.getRuntime().availableProcessors() * 10;
/**
* 线程有效时间
*/
private static final long KEEP_ALIVE_TIME = 200L;
public static final ThreadPoolExecutor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(CORE_POOL_SIZE,
MAXIMUM_POOL_SIZE,
KEEP_ALIVE_TIME,
TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<>(1024),
r -> {
Thread t = new Thread(r);
t.setName(t.getName());
if (t.isDaemon()) {
t.setDaemon(false);
}
if (Thread.NORM_PRIORITY != t.getPriority()) {
t.setPriority(Thread.NORM_PRIORITY);
}
return t;
});
}