前言:該線程池比較適合沒有固定大小并且比較快速就能完成的小任務晚缩,
它將為每個任務創(chuàng)建一個線程纱兑。那這樣子它與直接創(chuàng)建線程對象(new Thread())有什么區(qū)別呢?
好處就在于60秒內能夠重用已創(chuàng)建的線程。
CachedThreadPool:無界線程池等舔,可以進行自動線程回收牺荠。
如果線程池的大小超過了處理任務所需要的線程翁巍,那么就會回收部分空閑(60秒不執(zhí)行任務)的線程,當任務數(shù)增加時休雌,此線程池又可以智能的添加新線程來處理任務灶壶。此線程池不會對線程池大小做限制,線程池大小完全依賴于操作系統(tǒng)(或者說JVM)能夠創(chuàng)建的最大線程大小杈曲。SynchronousQueue是一個是緩沖區(qū)為1的阻塞隊列驰凛。
/**該線程池比較適合沒有固定大小并且比較快速就能完成的小任務,
它將為每個任務創(chuàng)建一個線程担扑。那這樣子它與直接創(chuàng)建線程對象(new Thread())有什么區(qū)別呢恰响?
好處就在于60秒內能夠重用已創(chuàng)建的線程。
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();
}
}
/*提交任務執(zhí)行*/
public static void execute(Runnable r) {
init();
pool.execute(r);
}
/* 關閉線程池*/
public static void unInit() {
if (pool == null || pool.isShutdown()) return;
pool.shutdownNow();
pool = null;
}
}