线程池线程池

SingleThreadPool单线程多任务--线程池工具类

2017-08-16  本文已影响33人  颤抖的闪电

前言:线程数量为1的FixedThreadPool,如果提交了多个任务,
那么这些任务将会排队,每个任务都会在下一个任务开始之前运行结束,所有的任务将会使用相同的线程。
SingleThreadExecutor:单个后台线程 (其缓冲队列是无界的)。
创建一个单线程的线程池。这个线程池只有一个核心线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。

/**线程数量为1的FixedThreadPool,如果提交了多个任务,
那么这些任务将会排队,每个任务都会在下一个任务开始之前运行结束,所有的任务将会使用相同的线程。
SingleThreadExecutor:单个后台线程 (其缓冲队列是无界的)*/

/**
 * @desc
 * @auth 方毅超
 * @time 2017/8/5 13:35
 */

public class SingleThreadPool {
    private static ExecutorService pool = null;

    /*初始化线程池*/
    public static void init() {
        if (pool == null) {
            pool = Executors.newSingleThreadExecutor();
        }
    }

    /*提交任务执行*/
    public static void execute(Runnable r) {
        init();
        pool.execute(r);
    }

    /* 关闭线程池*/
    public static void unInit() {
        if (pool == null || pool.isShutdown()) return;
        pool.shutdownNow();
        pool = null;
    }
}
上一篇下一篇

猜你喜欢

热点阅读