執行緒池之函式的執行

2021-04-16 19:26:43 字數 818 閱讀 2799

static void main(string arg)

, hash: ",

thread.currentthread.isthreadpoolthread,

thread.currentthread.gethashcode());

}catch (exception ex)

console.readline();

}static void callback(object state)

'." +

" is pool thread: , hash: ",

(string)state, thread.currentthread.isthreadpoolthread,

thread.currentthread.gethashcode());

//加上阻塞延時,使程式回到main函式繼續執行.

thread.sleep(2000);

system.console.writeline("finished");

}當把thread.sleep(2000);替換為:

int ticks = environment.tickcount;

while (environment.tickcount - ticks < 2000) ;

即關閉執行緒阻塞,而改用顯示迴圈執行。會有什麼樣的結果呢?

從執行結果可以看出,第三個執行緒執行請求,將在第乙個執行完後才開始執行。

這是因為,當沒有新執行緒建立時,執行緒池發現cpu的使用率達到100%,它將會處於阻塞狀態,直到有活動的執行緒。從總體上來說,這種方案較佳,尤其是執行緒中線程數量過大時,這樣能減少執行緒之間的切換時間。

執行緒池迴圈執行

using system using system.collections.generic using system.linq using system.text using system.threading public class lockobj 正處理佇列 public queuequeuep...

JUC之執行緒池

一 定義 提供了乙個執行緒佇列,佇列中儲存著所有等待的執行緒。作用 避免了建立與銷毀額外開銷,提高了相應的速度。二 執行緒池的體系結構 executorservice 子介面 執行緒池的主要介面 threadpoolexecutor 實線類 scheduledexecutorservice 子介面 ...

執行緒池之ThreadPoolExecutor概述

threadpoolexecutor提供了四個構造方法 我們以最後乙個構造方法 引數最多的那個 對其引數進行解釋 public threadpoolexecutor int corepoolsize,1 int maximumpoolsize,2 long keepalivetime,3 timeu...