大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 4種常見線程池

4種常見線程池

更新時間:2020-11-10 17:44:28 來源:動力節點 瀏覽2050次

線程池是一種多線程處理形式,處理過程中將任務添加到隊列,然后在創建線程后自動啟動這些任務。線程池在多線程任務中被廣泛運用,維護著多個線程運轉,等待著監督管理者分配可并發執行的任務。由此可見,線程池在多線程中扮演著舉足輕重的角色,發揮著其獨特的調配作用。本文就來向大家介紹4種常見線程池


1.newFixedThreadPool

public static ExecutorService newFixedThreadPool(int var0) {

return new ThreadPoolExecutor(var0, var0, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());

}

public static ExecutorService newFixedThreadPool(int var0, ThreadFactory var1) {

return new ThreadPoolExecutor(var0, var0, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), var1);

}

固定大小的線程池,可以指定線程池的大小,該線程池corePoolSize和maximumPoolSize相等,阻塞隊列使用的是LinkedBlockingQueue,大小為整數最大值。

該線程池中的線程數量始終不變,當有新任務提交時,線程池中有空閑線程則會立即執行,如果沒有,則會暫存到阻塞隊列。對于固定大小的線程池,不存在線程數量的變化。同時使用無界的LinkedBlockingQueue來存放執行的任務。當任務提交十分頻繁的時候,LinkedBlockingQueue

迅速增大,存在著耗盡系統資源的問題。而且在線程池空閑時,即線程池中沒有可運行任務時,它也不會釋放工作線程,還會占用一定的系統資源,需要shutdown。


2.newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor() {

return new Executors.FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue()));

}

public static ExecutorService newSingleThreadExecutor(ThreadFactory var0) {

return new Executors.FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), var0));

}

單個線程線程池,只有一個線程的線程池,阻塞隊列使用的是LinkedBlockingQueue,若有多余的任務提交到線程池中,則會被暫存到阻塞隊列,待空閑時再去執行。按照先入先出的順序執行任務。


3.newCachedThreadPool

public static ExecutorService newCachedThreadPool() {

return new ThreadPoolExecutor(0, 2147483647, 60L, TimeUnit.SECONDS, new SynchronousQueue());

}

public static ExecutorService newCachedThreadPool(ThreadFactory var0) {

return new ThreadPoolExecutor(0, 2147483647, 60L, TimeUnit.SECONDS, new SynchronousQueue(), var0);

}

緩存線程池,緩存的線程默認存活60秒。線程的核心池corePoolSize大小為0,核心池最大為Integer.MAX_VALUE,阻塞隊列使用的是SynchronousQueue。是一個直接提交的阻塞隊列, 他總會迫使線程池增加新的線程去執行新的任務。在沒有任務執行時,當線程的空閑時間超過keepAliveTime(60秒),則工作線程將會終止被回收,當提交新任務時,如果沒有空閑線程,則創建新線程執行任務,會導致一定的系統開銷。如果同時又大量任務被提交,而且任務執行的時間不是特別快,那么線程池便會新增出等量的線程池處理任務,這很可能會很快耗盡系統的資源。


4.newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int var0) {

return new ScheduledThreadPoolExecutor(var0);

}

public static ScheduledExecutorService newScheduledThreadPool(int var0, ThreadFactory var1) {

return new ScheduledThreadPoolExecutor(var0, var1);

}

定時線程池,該線程池可用于周期性地去執行任務,通常用于周期性的同步數據。

scheduleAtFixedRate:是以固定的頻率去執行任務,周期是指每次執行任務成功執行之間的間隔。

schedultWithFixedDelay:是以固定的延時去執行任務,延時是指上一次執行成功之后和下一次開始執行的之前的時間。


上述的提到的4種線程池并不包含所有的線程池,但在一般的多線程任務中足以擔當重任,當然,想要掌握更多種類的線程池以備不時之需也是極好的,本站的多線程教程可以輔助你學好線程池的相關知識。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩精品你懂的在线播放 | 伊人免费视频二 | 真91视频 | 成年午夜性视频免费播放 | 四虎影院永久地址 | 正在播放亚洲 | 日韩在线天堂 | 可以免费观看的一级片 | 青青青爽视频在线观看 | 男人私人影院免费看视频 | 成人免费网站久久久 | h视频网站在线观看 | aaa级片| 牛牛影视午夜免费福利 | 亚洲欧洲国产精品 | 成人在线视频免费观看 | 夜夜涩| 精品区 | 最新国产中文字幕 | 日韩国产一区二区 | 暗香影院午夜国产精品 | 亚洲色婷婷综合开心网 | 日韩毛片欧美一级a网站 | 欧美成人精品欧美一级乱黄 | 大狠狠大臿蕉香蕉大视频 | 性欧美videos高清喷水 | 欧美成人aⅴ | 特级毛片在线观看 | 国产成人精品视频免费大全 | 四虎影视免费观看免费观看 | 国产精品久久久亚洲第一牛牛 | 亚洲天堂福利视频 | 免费夜色污私人影院网站 | 91专区在线观看 | 成人精品综合免费视频 | 天天干天天操天天爱 | 四虎地址8848 | 久久99精品国产一区二区三区 | 久久婷婷久久一区二区三区 | 神马影院不卡不卡在线观看 | 日韩一区二区久久久久久 |