1.什麼是執行緒?
程序作為作業系統執行程式的基本單位,擁有應用程式的資源,程序包含執行緒,程序的資源被執行緒共享,執行緒不擁有資源。
2.前台執行緒和後台執行緒的區別?
程式關閉時,後台執行緒直接關閉,但前台執行緒會執行完後關閉。
通過thread類新建執行緒預設為前台執行緒。其他方式建立的都是後台執行緒。
多執行緒的幾種方式
一. 非同步多執行緒
staticvoid main(string
args)
-----------------
", thread.currentthread.managedthreadid);
for(int i = 0; i< 5;i++)
console.writeline(
"當前引數是,當前執行緒是
",t,thread.currentthread.managedthreadid);
};action.begininvoke(
"引數是
" + i, null, null
); }
console.writeline(
"----------主程式結束,執行緒id是-----------------
", thread.currentthread.managedthreadid);
console.read();
}}
二. threads執行緒
staticvoid main(string
args)
-----------------
", thread.currentthread.managedthreadid);
for(int i = 0; i< 5;i++)
console.writeline(
"當前引數是,當前執行緒是
", t, thread.currentthread.managedthreadid);
};thread thread = new
thread(threadstart);
thread.start(i);
}console.writeline(
"----------主程式結束,執行緒id是-----------------
", thread.currentthread.managedthreadid);
console.read();
}
三. threadpool執行緒池\
staticvoid main(string
args)
-----------------
", thread.currentthread.managedthreadid);
for(int i = 0; i< 5;i++)
console.writeline(
"當前引數是,當前執行緒是
", t, thread.currentthread.managedthreadid);
};threadpool.queueuserworkitem(waitcallback, i);
}console.writeline(
"----------主程式結束,執行緒id是-----------------
", thread.currentthread.managedthreadid);
console.read();
}
四. task
staticvoid main(string
args)
-----------------
", thread.currentthread.managedthreadid);
taskfactory taskfactory = new
taskfactory();
for (int i = 0; i< 5;i++)
console.writeline(
"當前引數是,當前執行緒是
", t, thread.currentthread.managedthreadid);
};taskfactory.startnew(action,i);
}console.writeline(
"----------主程式結束,執行緒id是-----------------
", thread.currentthread.managedthreadid);
console.read();
}
五. parallel
staticvoid main(string
args)
-----------------
", thread.currentthread.managedthreadid);
action action1 = () =>
console.writeline(
"當前引數是1,當前執行緒是
", thread.currentthread.managedthreadid);
};action action2 = () =>
console.writeline(
"當前引數是2,當前執行緒是
", thread.currentthread.managedthreadid);
};action action3 = () =>
console.writeline(
"當前引數是3,當前執行緒是
", thread.currentthread.managedthreadid);
};parallel.invoke(action1, action2, action3);
console.writeline(
"----------主程式結束,執行緒id是-----------------
", thread.currentthread.managedthreadid);
console.read();
}
上面簡單介紹了5種多執行緒的使用方式
多執行緒 實現多執行緒的幾種方式
public class mythread extends thread mythread mythread1 newmythread mythread mythread2 newmythread mythread1.start mythread2.start public class mythre...
多執行緒的幾種實現方式
前面兩種可以歸結為一類 無返回值,原因很簡單,通過重寫run方法,run方式的返回值是void,所以沒有辦法返回結果 後面兩種可以歸結成一類 有返回值,通過callable介面,就要實現call方法,這個方法的返回值是object,所以返回的結果可以放在object物件中 方式1 繼承thread類...
多執行緒實現的幾種方式
public static void main string args thread1 start public class calandfuture catch interruptedexception e class mytask implements callable 通過執行緒池建立執行緒 ...