1、當提交乙個新任務到執行緒池時首先執行緒池判斷基本執行緒池(corepoolsize)是否已滿?沒滿,建立乙個工作執行緒來執行任務。滿了,則進入下個流程;其次執行緒池判斷工作佇列(workqueue)是否已滿?沒滿,則將新提交的任務儲存在工作佇列裡。滿了,則進入下個流程;最後執行緒池判斷整個執行緒池(maximumpoolsize)是否已滿?沒滿,則建立乙個新的工作執行緒來執行任務,滿了,則交給飽和策略來處理這個任務;如果執行緒池中的執行緒數量大於 corepoolsize 時,如果某執行緒空閒時間超過keepalivetime,執行緒將被終止,直至執行緒池中的執行緒數目不大於corepoolsize;如果允許為核心池中的執行緒設定存活時間,那麼核心池中的執行緒空閒時間超過 keepalivetime,執行緒也會被終止。
2、飽和策略:
abort策略:預設策略,新任務提交時直接丟擲未檢查的異常rejectedexecutionexception,該異常可由呼叫者捕獲。
discard策略:新提交的任務被拋棄。
執行緒池的核心執行緒
1 執行緒池的核心執行緒是可以重複利用的 2 當有新任務來的時候,先看看當前的執行緒數有沒有超過核心執行緒數,如果沒超過就直接新建乙個執行緒 核心執行緒 來執行新的任務,如果超過了就看看快取佇列有沒有滿,沒滿就將新任務放進快取佇列中,滿了就新建乙個執行緒 非核心執行緒 來執行新的任務,如果執行緒池中...
每個執行緒塊中最大執行緒問題
1 每個block 最大1024個執行緒 視不同的卡來定 這個是執行緒總數的限制。2 每個執行緒塊最大維度的限制為x方向1024,y方向1024,z方向64 視不同的卡來定 3 乙個執行緒塊的執行緒情況同時收到上述兩條的約束,即,如果在x方向排布了1024個執行緒,那麼y和z方向的維度只能是1,否則...
Linux最大執行緒數限制
開始以為是記憶體不足導致無法建立執行緒,把jvm的 xms,xmx的2個引數都加大一倍 xms2048m xmx2048m。把 xss引數調小,還是啟動失敗。應該是系統方面的限制了,這台機器上搞了100個過tomcat程序,還有不少其他軟體,東西比較多且雜。確認過機器的記憶體還是足夠的,先排查系統引...