技術難點 : 多執行緒的使用與出現的問題
1 : 執行緒池的建立
使用對 .newfixedthreadpool進行建立執行緒池, 可自選長度, 後面的newlnamedthreadfactory, 一是定義了執行緒的名稱. 二是放入了無限佇列, 不會出現丟資料的情況
protected
static
final executorservice executor_service = ttlexecutors
.getttlexecutorservice
(executors.
newfixedthreadpool(20
,new
lnamedthreadfactory
("solr-uploader"))
);
2 : 對執行緒的使用
使用執行緒池建立執行緒後, 必須在外層放置可以讓執行緒生效的**, 例如for迴圈, 死迴圈等, 將要執行的**, 放入執行緒中的**塊範圍, 如果想將傳入變數, 則需要重寫runable方法, 將資料放入list / 放入實體類中傳入, (直接傳入變數會出現編譯錯誤, 也算是自我保護機制, 但是其實是可以操作變數的 )
3 : 子執行緒與主線程的互動
子執行緒沒有執行完任務, 但主線程已經執行完畢, 那麼任務會直接結束, 不會等待子執行緒
新增如下**
try
catch
(interruptedexception e)
主線程會等待子執行緒結束後,才會結束
4 : 問題 : 如果在單測中, 不手動shutdown執行緒池, 那麼該方法就不會結束
原因 : 因為不shutdown, 執行緒池就無法關閉, 執行緒依舊會等待下乙個任務開始, 在伺服器上, 我們可以選擇關閉, 釋放記憶體, 也可以選擇不關閉, 如果方法會復用, 那麼就不必建立新的執行緒
多執行緒 執行緒池的使用
執行緒池的作用 限制系統中執行執行緒的數量,減少記憶體的消耗,減輕伺服器負荷。thread t1 new thread new threaddemo1 執行緒a thread t2 new thread new threaddemo1 執行緒b thread t3 new thread new th...
Unity多執行緒 執行緒池的使用
unity技術qq群 484275915,有需要可以 相互 c 多執行緒的使用 unity支援多執行緒。感謝指正錯誤,兩年前寫的文章,現在回頭看,發現上一句話確實是錯的。這裡重申一下,unity不支援多執行緒,我們在unity中使用的多執行緒其實是c 的多執行緒,而非unity的多執行緒。unity...
多執行緒 執行緒池
第一 降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷毀造成的消耗。第二 提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。第三 提高執行緒的可管理性。執行緒是稀缺資源,如果無限制地建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一分配 調優和監控...