前言:線程數量為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;
}
}