实现思路:
1. 需要设置一个ThreadPoolUtils工具,并且是单例的。
2. 需要对ThreadPoolExecutor构造函数设置参数,核心线程与最大线程以及ThreadFactory
public class ThreadPoolUtils {
private final ExecutorService executor;
private static ThreadPoolUtils instance = new ThreadPoolUtils();
private ThreadPoolUtils() {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("XXX-ThreadPool-%d").build();
// 设置成处理器得2倍数
int size = Runtime.getRuntime().availableProcessors() * 2;
this.executor = new ThreadPoolExecutor(size,size,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(),namedThreadFactory);
}
public static ThreadPoolUtils getInstance() {
return instance;
}
public static <T> Future<T> execute(final Callable<T> runnable) {
return getInstance().executor.submit(runnable);
}
public static Future<?> execute(final Runnable runnable) {
return getInstance().executor.submit(runnable);
}
}