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