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

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

4種常見線程池

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

線程池是一種多線程處理形式,處理過程中將任務添加到隊列,然后在創建線程后自動啟動這些任務。線程池在多線程任務中被廣泛運用,維護著多個線程運轉,等待著監督管理者分配可并發執行的任務。由此可見,線程池在多線程中扮演著舉足輕重的角色,發揮著其獨特的調配作用。本文就來向大家介紹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種線程池并不包含所有的線程池,但在一般的多線程任務中足以擔當重任,當然,想要掌握更多種類的線程池以備不時之需也是極好的,本站的多線程教程可以輔助你學好線程池的相關知識。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久国产午夜精品理论片34页 | 爱爱永久免费视频网站 | 女人寂寞偷人视频a级 | 97夜色| 乱人伦99久久 | 亚洲精品黄色 | 四虎在线免费视频 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 日韩欧美国产亚洲 | 日本欧美一区二区三区在线观看 | 99re热久久资源最新获取 | 99久久精品国产高清一区二区 | 欧美成人久久久免费播放 | 福利影院在线播放 | 四虎精品免费视频 | 深夜福利网址 | 国产成人精品.一二区 | 天天久久狠狠伊人第一麻豆 | 四虎影院欧美 | 久久天天躁夜夜躁狠狠 | 97视频久久久 | 中日韩欧美一级毛片 | 五月婷婷六月激情 | 欧美视频一区二区三区 | 在线第一福利视频观看 | 亚洲在线观看一区二区 | 国产99热在线观看 | 好吊妞免费视频 | 日本不卡视频在线视频观看 | 欧美亚洲综合另类成人 | 国产一精品一aⅴ一免费 | 最新国产精品精品视频 | 中文字幕在线精品不卡 | 亚洲欧洲日韩国产aa色大片 | 成人午夜视频免费看欧美 | 女人18一级特级毛片免费看 | 国产精品久久新婚兰兰 | 男女一级毛片免费视频看 | 国产成+人欧美+综合在线观看 | 国内国语一级毛片在线视频 | 天天艹在线 |