自定義執行緒池-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,...