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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 JAVA并發框架視頻之Executor

JAVA并發框架視頻之Executor

更新時間:2020-06-22 12:56:27 來源:動力節點 瀏覽2121次

隨著當今處理器中可用的核心數量的增加,隨著對實現更高吞吐量的需求的不斷增長,多線程API變得非常流行。Java提供了自己的多線程框架,稱為Executor框架.

1592801510247473.jpgJAVA并發框架視頻之Executor

1.Executor框架是什么?

Executor框架包含一組用于有效管理工作線程的組件。Executor API通過Executors將任務的執行與要執行的實際任務解耦。這是生產者-消費者模式的一種實現。

java.util.concurrent.Executors提供了用于創建工作線程的線程池的工廠方法。

為了使用Executor框架,我們需要創建一個線程池并提交任務給它以供執行。Executor框架的工作是調度和執行已提交的任務并從線程池中拿到返回的結果。

浮現于腦海中的一個基本的問題是,當我們創建java.lang.Thread的對象或調用實現了Runnable/Callable接口來達到的程序的并行性時,為什么需要線程池?

答案來源于兩個基本面:

為新任務創建新的線程會存在額外的線程創建以及銷毀的開銷。管理這些線程的生命周期會明顯增加CPU的執行時間。

不進行任何限制地為每個進程創建線程會導致創建大量線程。這些線程會占用大量內存并引起資源的浪費。當一個線程利用完CPU的時間片后另一個線程即將利用CPU的時間片時,CPU會花費大量的時間來切換線程的上下文。

所有的這些因素都會導致系統的吞吐量下降。線程池通過保持線程一直存活并重用這些線程來克服這個問題。當提交到線程池中的任務多于正在執行的線程時,那些多余的任務將被放到隊列中。一旦執行任務的線程有空閑的了,它們會從隊列中取下一個任務來執行。對于JDK提供的現成的executors此任務隊列基本是無界的。

2.Executors的類型

現在我們已經了解了executors是什么,讓我們來看看不同類型的executors。

2.1 SingleThreadExecutor

此線程池executor只有一個線程。它用于以順序方式的形式執行任務。如果此線程在執行任務時因異常而掛掉,則會創建一個新線程來替換此線程,后續任務將在新線程中執行。

ExecutorService executorService=Executors.newSingleThreadExecutor()

2.2 FixedThreadPool(n)

顧名思義,它是一個擁有固定數量線程的線程池。提交給executor的任務由固定的n個線程執行,如果有更多的任務,它們存儲在LinkedBlockingQueue里。這個數字n通常跟底層處理器支持的線程總數有關。

ExecutorService executorService=Executors.newFixedThreadPool(4);

2.3 CachedThreadPool

該線程池主要用于執行大量短期并行任務的場景。與固定線程池不同,此線程池的線程數不受限制。如果所有的線程都在忙于執行任務并且又有新的任務到來了,這個線程池將創建一個新的線程并將其提交到executor。只要其中一個線程變為空閑,它就會執行新的任務。如果一個線程有60秒的時間都是空閑的,它們將被結束生命周期并從緩存中刪除。

但是,如果管理得不合理,或者任務不是很短的,則線程池將包含大量的活動線程。這可能導致資源紊亂并因此導致性能下降。

ExecutorService executorService=Executors.newCachedThreadPool();

2.4 ScheduledExecutor

當我們有一個需要定期運行的任務或者我們希望延遲某個任務時,就會使用此類型的executor。

ScheduledExecutorService scheduledExecService=Executors.newScheduledThreadPool(1);

可以使用scheduleAtFixedRate或scheduleWithFixedDelay在ScheduledExecutor中定期的執行任務。

scheduledExecService.scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit)

scheduledExecService.scheduleWithFixedDelay(Runnable command,long initialDelay,long period,TimeUnit unit)

這兩種方法的主要區別在于它們對連續執行定期任務之間的延遲的應答。

scheduleAtFixedRate:無論前一個任務何時結束,都以固定間隔執行任務。

scheduleWithFixedDelay:只有在當前任務完成后才會啟動延遲倒計時。

JAVA并發框架視頻之Executor

以上就是動力節點java培訓機構的小編針對“JAVA并發框架視頻之Executor”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 前任4在线观看 | 99久久精品国产一区二区成人 | 日韩精品福利视频一区二区三区 | 色偷偷亚洲精品一区 | 亚洲天天做夜夜做天天欢 | 天天操夜夜夜 | 国产欧美精品午夜在线播放 | 欧美综合视频在线 | 91精品国产高清久久久久久io | 久久福利小视频 | 国产ar高清视频+视频 | 黄色在线免费看 | 日日噜噜夜夜躁躁狠狠 | 欧美日韩中文在线视频 | 伊人一区| 久青草免费视频 | 一级女人毛片 | 国产精品久久久久影院色老大 | 色涩网站 | 欧美国产亚洲一区二区三区 | 亚洲欧美一区二区三区在线播放 | 久草综合视频在线 | 综合久久久久综合97色 | 夜间福利在线观看 | 国产成人精品久久亚洲高清不卡 | 国产精品视频全国免费观看 | 狠狠色噜噜狠狠色综合久 | 日本一区高清视频 | 亚洲国产视频一区 | 日韩欧美高清一区 | 国产成人毛片亚洲精品不卡 | 久久久久久综合成人精品 | 奇米视频777 | 国产毛茸茸 | 九九久久国产 | 亚洲精品播放 | 亚洲欧洲国产经精品香蕉网 | 四虎成人精品国产一区a | 性视频久久 | 日韩日韩 | 亚洲免费色视频 |