多執行緒的環境中,盡量採用執行緒池

2021-05-22 08:26:32 字數 1038 閱讀 2129

view plaincopy to clipboardprint?

...  

while(true)  

}     

...      

...while(true)

} ...  

沒有錯嗎,是不是很爽,如果有多少個請求,就產生多少個執行緒,請像在門口待客的接待員一樣,讓每個客人都馬上得到處理,程式絕對正確,你不信到其它地方搜尋一下,啟動和呼叫都是正確的。

可是這樣的編寫方式,絕對只適合小量訪問的環境中,並且要保證不會有大量的併發發生才可以勉強這樣寫,我做過試驗,如果是50個併發,還勉強可以接受,如果有1000個,也許就要丟掉一大半了,我做過如下試驗:

view plaincopy to clipboardprint?

public static void main(string args)   

}  //初使化執行緒池,這是jdk5.0中自帶的執行緒池,這裡的引數依次代表:

//核心執行緒數(最小活動執行緒數)

//最大執行緒數及併發數【這個要注意,如果你的實際發大於該數,則有些請求這個時候雖然被接收,但是去得不到處理,這個資料一定得根據實際情況而設定,如我這裡設值為20,實際模擬併發50,如迴圈一次,或者是二次併發,總會有20個不能夠處理,如果設為25,就有15得不到處理,如果設為50則全部可以被處理,這個可以折磨了我好幾天】

//執行緒池維護執行緒所允許的空閒時間

//執行緒池維護執行緒所允許的空閒時間的單位

//執行緒池所使用的緩衝佇列

//執行緒池對拒絕任務的處理策略(通常是丟擲異常)

threadpoolexecutor threadpool = new threadpoolexecutor(10, 100, 10,timeunit.seconds,

new arrayblockingqueue(10),

new threadpoolexecutor.discardoldestpolicy());

while(true)

} 可以看出這裡的啟動和上面沒有多大的差別,這樣寫還更簡潔,只是需要初使化一些必須的引數而已。

多執行緒 執行緒池

第一 降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷毀造成的消耗。第二 提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。第三 提高執行緒的可管理性。執行緒是稀缺資源,如果無限制地建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一分配 調優和監控...

多執行緒 執行緒池

執行緒池是什麼 執行緒池 thread pool 是一種基於池化思想管理執行緒的工具,經常出現在多執行緒伺服器中,如mysql。執行緒過多會帶來額外的開銷,其中包括建立銷毀執行緒的開銷 排程執行緒的開銷等等,同時也降低了計算機的整體效能。執行緒池維護多個執行緒,等待監督管理者分配可併發執行的任務。這...

多執行緒 執行緒池

執行緒池的作用 減少了每次建立 銷毀執行緒所帶來的損耗。執行緒池建立執行緒的簡易流程 文字描述 1 先判斷核心執行緒池 corepoolsize 是否已滿,沒滿就建立核心執行緒執行,滿了就進行下一判斷。2 判斷等待佇列 workqueue 是否已經滿了,沒滿就新增到等待佇列,滿了就進行下一判斷。3 ...