CachedThreadPool 60秒缓存线程--线程池工具类

前言:该线程池比较适合没有固定大小并且比较快速就能完成的小任务,
它将为每个任务创建一个线程。那这样子它与直接创建线程对象(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;
    }
}

你可能感兴趣的:(CachedThreadPool 60秒缓存线程--线程池工具类)