執行緒池的構造方法
threadpoolexecutor(
int corepoolsize;-->核心執行緒數
int maximumpoolsize;-->最大執行緒數
long keepalivetime;-->空閒執行緒休眠時間
timeuint uint;-->時間單元
blockingqueueworkqueue;-->工作佇列
threadfactory threadfactory; -->執行緒工廠
rejectedexecutionhandler handler;-->拒絕策略
)blockingqueueworkqueue;-->工作佇列分類
1.synchronousqueue 直接提交佇列,
沒有容量,每乙個插入操作都要等待乙個刪除操作,反之,每乙個刪除都要等待插入操作,每乙個新任務都交給執行緒執行,如果沒有空閒執行緒,則嘗試建立新的執行緒,如果執行緒達到最大時,則執行拒絕策略
2,有界線程arrayblockingqueue
判斷節點:
corepoolsize-->佇列-->maximumpoolsize-->拒絕策略
新的任務進來,(未到達核心執行緒數之前,不會判斷執行緒是否空閒,直接建立新的執行緒)先判斷有沒有達到核心執行緒數,沒有的話則直接建立執行緒,如果達到了核心執行緒數則判斷有沒有空閒執行緒,如果執行緒有空閒,則任務提交給空閒執行緒處理,沒有空閒執行緒的話,則判斷是否佇列已滿,未滿的話,加入佇列,滿的話,則判斷有沒有達到最大執行緒數,如果沒有達到則直接建立新的執行緒去執行任務,如果達到了最大執行緒數,執行拒絕策略;
3,無界線程佇列linkedblockingqueue
判斷節點:
corepoolsize-->佇列-->系統資源耗盡
新的任務進來,先判斷有沒有達到核心執行緒數,沒有的話則直接建立執行緒,如果達到了核心執行緒數則判斷有沒有空閒執行緒,如果執行緒有空閒,則任務提交給空閒執行緒處理,沒有空閒執行緒的話,則加入佇列等待,若建立和處理的速度差異很大,無界佇列會保持快速增長,知道系統資源耗盡。
4,任務優先佇列
帶有執行優先順序的佇列,通過priorityblockingqueue實現,
可以控制任務執行的先後順序。
什麼是執行緒池?執行緒池的工作原理和使用執行緒池的好處
乙個執行緒池管理了一組工作執行緒,同時它還包括了乙個用於放置等待執行任務的任務佇列 阻塞佇列 預設情況下,在建立了執行緒池後,執行緒池中的執行緒數為0.當任務提交給執行緒池之後的處理策略如下 1 如果此時執行緒池中的數量小於corepoolsize 核心池的大小 即使執行緒池中的執行緒都處於空閒狀態...
什麼是執行緒池?執行緒池的工作原理和使用執行緒池的好處
乙個執行緒池管理了一組工作執行緒,同時它還包括了乙個用於放置等待執行任務的任務佇列 阻塞佇列 預設情況下,在建立了執行緒池後,執行緒池中的執行緒數為0.當任務提交給執行緒池之後的處理策略如下 1 如果此時執行緒池中的數量小於corepoolsize 核心池的大小 即使執行緒池中的執行緒都處於空閒狀態...
執行緒池和程序池
動態建立程序 或執行緒 是比較耗費時間的,這樣導致較慢的客戶響應。動態建立的子程序 子執行緒 通常只用來為乙個客戶服務,這將導致系統上產生大量的細微程序 或執行緒 程序間的切換將消耗大量的cpu時間。動態建立的子程序是當前程序的完整映像,當前程序必須謹慎地管理其分配的檔案描述符和堆記憶體等系統資源,...