前言:该线程池比较适合没有固定大小并且比较快速就能完成的小任务,
它将为每个任务创建一个线程。那这样子它与直接创建线程对象(new Thread())有什么区别呢?
好处就在于60秒内能够重用已创建的线程。
CachedThreadPool:无界线程池,可以进行自动线程回收。
如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能的添加新线程来处理任务。此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小。SynchronousQueue是一个是缓冲区为1的阻塞队列。
/**该线程池比较适合没有固定大小并且比较快速就能完成的小任务,
它将为每个任务创建一个线程。那这样子它与直接创建线程对象(new Thread())有什么区别呢?
好处就在于60秒内能够重用已创建的线程。
CachedThreadPool:无界线程池,可以进行自动线程回收。
*/
/**
* @desc
* @auth 方毅超
* @time 2017/8/5 13:25
*/
public class CachedThreadPool {
private static ExecutorService pool = null;
/*初始化线程池*/
public static void init() {
if (pool == null) {
pool = Executors.newCachedThreadPool();
}
}
/*提交任务执行*/
public static void execute(Runnable r) {
init();
pool.execute(r);
}
/* 关闭线程池*/
public static void unInit() {
if (pool == null || pool.isShutdown()) return;
pool.shutdownNow();
pool = null;
}
}