自定義執行緒池 c 的簡單實現

2021-05-01 06:18:34 字數 1914 閱讀 9179

自定義執行緒池-c#的簡單實現

using

system;

using

system.threading;

using

system.collections;

namespace

customthreadpool

//////靜態方法,開啟或喚醒乙個執行緒去執行指定的**方法

//////

委託例項

///傳遞給**方法的引數

///當沒有可用的執行緒時的等待時間,以毫秒為單位

///

public

static

bool queueuserworkitem(waitcallback waitcallback, object obj, int timeout)

long starttime = datetime.now.ticks;

do else

if (mythread.t.threadstate == threadstate.suspended)

} //

monitor.pulseall(threadlist);

thread.sleep(500);

}while (((datetime.now.ticks - starttime) / 10000) < timeout); }

finally }

return

false; }

//使用mythread 物件填充執行緒列表,注意,這個時候執行緒並沒有啟動

private

static

void initthreadlist()

} }

} 2.mythread.cs

using

system;

using

system.threading;

namespace

customthreadpool

} public mythread()

//////開啟新執行緒或喚醒執行緒,去執行**方法

//////

用**方法例項化了的委託例項

///傳遞給**方法的引數值

///true

表示執行緒為掛起狀態,false 則表示執行緒還沒建立

public

void start(waitcallback w, object o, bool issuspend)

else }

//////

執行緒執行的方法

///private

void threadproc()

} }

} 3.test.cs

using

system;

using

system.threading;

namespace

customthreadpool

", i.tostring());

thread t = new thread(new threadstart(workthread));

t.start(); }

console.readline();

thread.currentthread.abort(); }

public

static

void workthread()

} else }

} thread.currentthread.abort(); }

public

static

void threadprocone(object stateinfo)

public

static

void threadproctwo(object stateinfo)

} }

自定義執行緒池

有些時候 jdk自帶的cachedthreadpool fixedthreadpool等執行緒池完成不了我們業務的需求時 可以用threadpoolexecutorg構造自定義的執行緒池。public class usethreadpoolexecutor1 這段 會首先執行任務1,然後把2 3 4...

自定義執行緒池

建立執行緒池方法 儘管executors提供了四種執行緒池建立的方式,但為了實現某些特定的需求,可以自己建立執行緒池。如在阿里的程式設計規範使用executors建立執行緒時,一般會報錯,並提示以下資訊 執行緒池不允許使用executors去建立,而是通過threadpoolexecutor的方式,...

自定義執行緒池

自定義執行緒池建立api 執行緒池建立通過juc的介面 executor 實現,平時我們使用其實現類 threadpoolexecutor 實現自定義執行緒池。常用建構函式 public threadpoolexecutor int corepoolsize,int maximumpoolsize,...