第三天 執行緒池的使用(面試)

2021-07-31 23:10:27 字數 843 閱讀 4510

引入執行緒池的原因

由於執行緒的生命週期中包括,建立-就緒-執行-阻塞-掛機-結束 階段,當我們處理的任務數目比較小的時候,我們可以自己建立幾個執行緒來處理相應的任務,但是有大量的任務時,由於建立和銷毀執行緒都需要很大的開銷,運用執行緒池就可以大大的緩解這些記憶體開銷很大的問題。

執行緒池的使用:

executor類給我們提供了的靜態方法,就可以建立相應的執行緒池:

public static executorservice newsigleexecutor();

public static executorservice newfixedthredpool();

public static executorservice newcachedthreadpool();

newsignalexecutor()返回乙個包含單執行緒的executor,將多個任務交給executor時,這個執行緒處理完乙個任務後會接著處理下乙個任務,若該執行緒出現異常,將會有乙個新的執行緒來替代它

newfixedthreadpool()返回乙個包含指定數目執行緒數的執行緒池,如果任務數量多於執行緒數目的話,那麼沒有執行的任務必須等待,直到任務完成為止

newcachedthreadpool()根據使用者的任務數目建立相應的執行緒來處理,該執行緒池不會對執行緒的數目加以限制,完全依賴於虛擬機器能建立的執行緒輸入,但是可能會引起記憶體不足。

我們只需要將執行的任務放入run方法中即可,將runable介面的實現類交給執行緒池的execute方法,作為它的乙個引數

百天打卡第三天 執行緒安全

程式死鎖的基本原因 下面這三句話背下來面試很受用synchronize 關鍵字可以對 塊或方法進行修飾,而不能夠對於class以及變數進行修飾。接下來的部分也背下來吧,蠻有用的 1與monitor 關聯的物件不能為空 錯誤程式 private final object mutex null publ...

面試題第三天

寫個單例,什麼是單例,單例怎麼實現,怎麼理解單例?最簡單的單例就是乙個模組 class foo object deffin self pass a foo 答 單例模式是一種常用的網路設計模式,該模式的主要目的是確保某乙個列只有乙個實力純在,當你希望在整個系統中,某個類只出現乙個例項時,單例物件就能...

複習第三天 多執行緒

並行 兩個或者兩個以上的事件,同一時刻發生 併發 兩個或者兩個以上的事件,同一時間段發生 程序 進入到記憶體中的乙個程式,好比開啟乙個360安全衛士 執行緒 是程序的乙個執行單位,負責當前程序中程式的執行,乙個程序至少有乙個執行緒,乙個程序可以有多個執行緒。public class run exte...