首先明確什麼時候用多執行緒?
多執行緒是提高cpu的利用率,只有當cpu空閒時間比較多情況下,才能體現出多執行緒的優勢。
執行緒:執行緒是程序的組成單位。
主要步驟:
① 例項化threadstart物件,引數是執行緒將要執行的方法。
② 編寫執行緒將要執行的方法。
③ 例項化thread物件,引數是剛才例項化threadstart的物件。
④ thread物件啟動,
執行緒的例子:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.threading;
namespace threadtest
private static int interval;
private void form1_load(object sender, eventargs e)
public void examplemethod() 計算器:", name, i);}}
}}}執行緒池:比執行緒在使用資源的方面更優化合理一些。
主要步驟:
① 例項化waitcallback乙個物件,引數是要執行的執行緒池的方法。
② 編寫執行緒池要執行的方法。
③ 把任務排入執行的佇列,例如threadpool.queueuserworkitem(wc1, 1);。
執行緒池的例子:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.threading;
namespace thread
private void form1_load(object sender, eventargs e)
public static void examplemethod(object status)
執行中", (int)status);
// thread.sleep(1000);}}
public static void examplemethodtwo(object status)
", (int)status);
// thread.sleep(1000);}}
}}timer:
這裡指system.threading.timer,主要指在多長時間間隔執行方法體。
timer主要步驟:
① 例項化timercallback物件,引數是timer執行的方法。
② 編寫timer執行的方法。
③ 例項化timer物件,引數是剛才的timercallback物件。
timer例子:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.threading;
namespace mytimertest
private void form1_load(object sender, eventargs e)
void timer_elapsed(object sender)}}
}事件
事件主要是特定的動作觸發而執行方法體。
事件源、監聽、觸發的方法體三個元素構成。
理解執行緒池
建立執行緒池的一種方式 threadpoolexecutor threadpoolexecutor new threadpoolexecutor corepoolsize,maximumpoolsize,keepalivetime,unit,workqueue,threadfactory,handl...
理解執行緒池
為什麼要使用執行緒池?我們使用乙個執行緒的步驟 1.建立執行緒 2.使用執行緒 3.銷毀執行緒 每使用乙個執行緒必須經過這三個步驟,如果步驟1,和步驟3所需要的時間和大於步驟2,我們就得思考,會不會本末倒置,怎麼樣提高效能?縮短建立和銷毀執行緒的時間!當乙個執行緒完成自己的工作後,不去銷毀它,讓它繼...
執行緒池的理解
原來一直對執行緒池心存疑惑.第乙個疑惑是.執行緒類在例項化的時候就已經指定了run函式了,也就是說,乙個執行緒在例項化的時候,他能做什麼就已經定下來了,要做別的事,就要新開乙個執行緒.這感覺就和執行緒池的思想違背了,怎麼樣從執行緒池裡面拿乙個執行緒出來就可以執行呢?執行完了然後再放回去呢?第二個疑惑...