前言:线程数量为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;
}
}
网友评论