大战熟女丰满人妻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種線程池并不包含所有的線程池,但在一般的多線程任務中足以擔當重任,當然,想要掌握更多種類的線程池以備不時之需也是極好的,本站的多線程教程可以輔助你學好線程池的相關知識。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久综合香蕉久久久久久久 | 日韩欧美综合视频 | 亚洲综合香蕉 | 欧美观看一级毛片 | 色老头网站久久网 | 在线日本妇人成熟免费观看 | 久久精品国产久精国产果冻传媒 | 欧美日韩亚洲综合久久久 | 国产精品一区二区在线播放 | 爱爱夜夜爽成人夜夜爽 | 免费国产a国产片高清不卡 免费国产阿v视频在线观看 | 国产一二三区在线观看 | 日韩欧美成末人一区二区三区 | 久久久久在线观看 | 夜夜操天天干 | 久久精品综合 | 91视频一区 | 波多野结衣中文字幕一区二区 | 精品国产免费观看 | 亚洲福利社| 国产一区二区三区免费观看 | 女人与zzzooooxxx| 伊在人亚洲香蕉精品区麻豆 | 98精品国产综合久久 | 五月天精品 | 年级的后妈妈2中文翻译 | 一区二区高清视频 | 久草热线 | 激情五月综合婷婷 | 日本黄色录像 | 成年女人免费看一级人体片 | 欧美激情xxxx性bbbb | 69精品久久久久 | 亚洲精品视频免费在线观看 | 欧美性色福利视频在线观看 | 久99久爱精品免费观看视频 | 特大一级aaaaa毛片 | 国内精品久久久久久中文字幕 | 免费观看久久 | 一本色道久久综合亚洲精品 | 香蕉视频免费看 |