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


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 97精品福利视频在线 | 非常色的视频 | 青草娱乐极品免费视频 | 亚洲欧美日韩国产 | 韩国女主播一区二区三区视频 | 8090色| 毛片特级| 一区二区三区鲁丝不卡麻豆 | 咪咪色在线视频 | 亚洲精品中文字幕第一区 | 国产精品国产自线在线观看 | 欧美日韩精品一区二区在线线 | 日本不卡高清免费 | 欧美日本视频在线观看 | 97影院理论片在线观看 | 中文字幕视频免费在线观看 | 色综合久久精品中文字幕 | 99国产福利视频区 | 天天做天天爱夜夜想毛片 | 99久久精品国产片久人 | 真正全免费视频a毛片 | 亚洲一级视频在线观看 | 国产小视频91 | 99精品久久久久久久 | 最新欧美精品一区二区三区不卡 | 日本爱爱片 | 亚洲第一永久在线观看 | 国产亚洲欧美日韩v在线 | 久久综合九色综合97伊人麻豆 | 一级美国乱色毛片 | 九天玄帝诀高清300集免费观看 | 日韩城人免费 | 999福利视频 | 久久久久久久久免费视频 | 热久久网站 | 日本一级片免费观看 | 欧美亚洲另类久久综合 | 免费观看黄色a一级录像 | 久久久亚洲欧美综合 | 日韩一级欧美一级毛片在 | 久久久成人啪啪免费网站 |