多執行緒 3 ThreadPool

2022-06-14 21:30:33 字數 960 閱讀 2062

閱讀目錄

使用thread類已經可以建立並啟動執行緒了,但是隨著開啟的執行緒越來越多,執行緒的建立和終止都需要手動操作,非常繁瑣,另乙個問題是,開啟更多新的執行緒但是沒有用的執行緒沒有及時得到終止的時候,會占用越來越多的系統資源,影響效能。

所以,.net為我們引入了threadpool(執行緒池),我們只需要把要執行的任務放到執行緒池中即可,執行緒的開啟包括資源的釋放都由執行緒池幫我們完成。下面看一下怎麼使用執行緒池。

回到頂部

執行緒池的使用非常簡單,如下**:

", thread.currentthread.managedthreadid));

}, "lambda state");

thread.sleep(timespan.frommilliseconds(3000));

console.writeline("main thread completed!");

console.readkey();

}/// /// 委託匹配方法

///

///

static void asyncaction(object obj)

", thread.currentthread.managedthreadid));}}

}輸出結果:

回到頂部

使用執行緒池建立執行緒這麼簡單,然後效能又好,是不是以後建立執行緒都去使用執行緒池呢?答案是否定的。

那麼,以下場景是不適合使用執行緒池,而是自己建立並管理執行緒:

需要前台執行緒時。因為執行緒池預設建立的都是後台執行緒。

需要執行緒具有特定的優先順序。因為放到執行緒池中的執行緒都是由執行緒池來排程的,無法對其優先順序進行設定。

需要長時間執行的任務。由於執行緒池具有最大執行緒數限制,因此大量阻塞的執行緒池執行緒可能會阻止任務啟動。

多執行緒 ThreadPool執行緒池

簡單說明一下 執行緒池可以看做容納執行緒的容器 乙個應用程式最多只能有乙個執行緒池 threadpool靜態類通過queueuserworkitem 方法將工作函式排入執行緒池 每排入乙個工作函式,就相當於請求建立乙個執行緒 執行緒池的作用 1 執行緒池是為突然大量爆發的執行緒設計的,通過有限的幾個...

非同步多執行緒(ThreadPool)

執行緒池是對thread的一種封裝,方便管理,是一種享元模式。避免api亂用,降低複雜度 減少建立銷毀的成本,限制最大執行緒數量 threadpool.queueuserworkitem t this.dosomethinglong btnthreadpool click 利用manualreset...

多執行緒程式設計 執行緒池 threadpool

很多公司裡,雇員通常會在辦公室度過他們的辦公時光 偶爾也會外出訪問客戶或 商 或是參加 展會。雖然外出可能很有必要,並且可能需要很多人一起去,不過對於一些特別的雇員來說,一趟可能就是幾個月,甚至是幾年。公司要給每個雇員都配一輛車,這基本上是不可能的,不過公司可以提供一些共用車輛 這樣就會有一定數量車...