1樓:網友
abstractexecutorservice的乙個子類threadpoolexecutor中,有盯歲乙個例項化函式:
public threadpoolexecutor(int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,blockingqueueworkqueue,threadfactory threadfactory);
其中:threadfactory就是說這個池子裡的執行緒是怎麼例化,執行緒的屬性值,如:
new threadfactory()
慎孝 public thread newthread(runnable r) {
return new thread(r, "thread_pool_"
就是給這個執行緒池裡的所凱孝睜有執行緒起乙個別名。
什麼叫執行緒池?執行緒池如何使用?
2樓:網友
1、什麼是執行緒池: 提供了乙個 介面的實現用於建立執行緒池。
多執行緒技術主要解決處理器單元內多個執行緒執行的問題,它可以顯著減少處理器單元的閒置時間,增加處理器單元的吞吐能力。
如果:t1 + t3 遠大於 t2,則可以採用執行緒池,以提高伺服器效能。
乙個執行緒池包括以下四個基本組成部分:
1、執行緒池管理器(threadpool):用於建立並管理執行緒池,包括 建立執行緒池,銷燬執行緒池,新增新任務;
2、工作執行緒(poolworker):執行緒池中執行緒,在沒有任務時處於等待狀態,可以迴圈的執行任務;
3、任務介面(task):每個任務必須實現的介面,以供工作執行緒排程任務的執行,它主要規定了任務的入口,任務執行完後的收尾工作,任務的執行狀態等;
4、任務佇列(taskqueue):用於存放沒有處理的任務。提供一種緩衝機制。
執行緒池技術正是關注如何縮短或調整t1,t3時間的技術,從而提高伺服器程式效能的。它把t1,t3分別安排在伺服器程式的啟動和結束的時間段或者一些空閒的時間段,這樣在伺服器程式處理客戶請求時,不會有t1,t3的開銷了。
執行緒池不僅調整t1,t3產生的時間段,而且它還顯著減少了建立執行緒的數目,看乙個例子:
假設乙個伺服器一天要處理50000個請求,並且每個請求需要乙個單獨的執行緒完成。**程池中,執行緒數一般是固定的,所以產生執行緒總數不會超過執行緒池中執行緒的數目,而如果伺服器不利用執行緒池來處理這些請求則執行緒總數為50000。一般執行緒池大小是遠小於50000。
所以利用執行緒池的伺服器程式不會為了建立50000而在處理請求時浪費時間,從而提高效率。
3樓:於斯無非無言
執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後自動啟動這些任務。執行緒池執行緒都是後臺執行緒。每個執行緒都使用預設的堆疊大小,以預設的優先順序執行,並處於多執行緒單元中。
如果某個執行緒在託管**中空閒(如正在等待某個事件),則執行緒池將插入另乙個輔助執行緒來使所有處理器保持繁忙。如果所有執行緒池執行緒都始終保持繁忙,但佇列中包含掛起的工作,則執行緒池將在一段時間後建立另乙個輔助執行緒但執行緒的數目永遠不會超過最大值。超過最大值的執行緒可以排隊,但他們要等到其他執行緒完成後才啟動。」
4樓:南昌建設羅丹
你好,可以閱讀以下部落格,個人覺得這部落格能幫助你瞭解如何使用執行緒池。
執行緒池。如果滿意,望,謝謝!
5樓:匿名使用者
多執行緒技術主要解決處理器單元多個執行緒執行的問題,它可以顯著減少處理器單元閒置時間,增加處理器單元的吞吐能力。在減少了建立和銷燬執行緒次數,每個工作執行緒都可以重複被利用,可執行多個執行緒,可以根據系統的承受能力,調整執行緒池的數目,防止消耗多的記憶體,而把伺服器過於繁忙。
c中如何讓 主執行緒 等待 子執行緒終止
建立一個主物件,有發出的執行緒數 分配執行緒時確定,並在分配時確定每個執行緒guid 已完成的執行緒數 初始為0 異常的執行緒數 初始為0 以及 事件 待處理的連結串列集合 應含有guid值 等。每個子執行緒完成時都會觸發一個完成事件或異常事件,主物件捕獲這個事件,並比對guid,並且將已完成的執行...
程序和執行緒的區別
程序和執行緒的區別如下 1 兩者的本構關係。程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位。執行緒是程序的一個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位 執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少...
什麼是執行緒?試述執行緒與程序的區別。(在計算機作業系統裡)
程序有兩個屬性,一是資源分配單位,另一個是排程單位。而現在的作業系統都是多道程式的思想,多道程式思想要想系統效率高,則併發的力度要大,也就是說系統中併發執行的程序越多越好,但程序是資源分配的單位,程序之間的切換需要更改所需資源,因此程序切換太頻繁,則系統開銷的時間就越大,因而為了即提高併發力度,又不...