多线程编程(1)
為了以后忘記以后可以再看,所以記錄下.
主線程
程序開始后將有一個主線程,即
Thread.CurrentThread一個簡單的示例,阻塞當(dāng)前線程
class Program {static void Main(string[] args){Console.WriteLine(DateTime.Now);Thread.Sleep(5000);Console.WriteLine(DateTime.Now);} }創(chuàng)建一個線程
public class Demo1 {private Thread thread1;private Thread thread2;public Demo1(){thread1 = new Thread(new ThreadStart(Task1));thread2 = new Thread(new ThreadStart(Task2));thread1.Start();thread2.Start();}public void Task1(){Console.WriteLine("Code By Developer");}public void Task2(){Console.WriteLine("Test By Tester");} }這里創(chuàng)建了2個線程,然后調(diào)用Start方法啟動線程.
阻塞內(nèi)部線程(非主線程)
修改上面程序,阻塞第1個線程
public void Task1() {Console.WriteLine(DateTime.Now);Thread.Sleep(5000);Console.WriteLine(DateTime.Now);Console.WriteLine("Code By Developer"); }public void Task2() {Console.WriteLine("Test By Tester"); }可以看到兩個線程互不影響
為什么要使用線程
我想能不用線程就不要用,因為線程很復(fù)雜.凡事復(fù)雜的東西均隱藏在背后,一切都是為了讓客戶感受到更加簡單。
Windows操作系統(tǒng)是多進(jìn)程了,為什么要多進(jìn)程?那么你可以一邊上網(wǎng),一邊聽歌,一邊聊天。否則這3件事情你只能選擇1個。你愿意怎么樣的方式?
多線程也是一樣,想象一下,很少人看到公司老板在寫程序吧?
老板猶如公司的主程序一般,他忙不過來,必須把任務(wù)分擔(dān)出去,讓某某人編碼,讓某某人搞測試,一個公司的運(yùn)作就猶如一個程序。
人是怎么做事的
若有3件事1個人的話,只能一件一件事做,無法分身。
若有3件事3個人的話,那么可以1個人做1件事。人多好辦事。
OK,先不要想的太復(fù)雜,都是可以以現(xiàn)實生活來表達(dá)呢。拋棄難懂的理論。
線程優(yōu)先級
假設(shè)你到一家餐館,廚師負(fù)責(zé)燒菜,營業(yè)員負(fù)責(zé)端菜。營業(yè)員就端不了菜。那么廚師燒菜的優(yōu)先級就要比較高.
其實比較常見的就是我們下載電影時,你肯定會挑你喜歡的看優(yōu)先下載的,同時也會開著其他下載
示例代碼如下
?
public class Demo1 {private Thread thread1;private Thread thread2;public Demo1(){thread1 = new Thread(new ThreadStart(Task1));thread2 = new Thread(new ThreadStart(Task2));thread1.Priority = ThreadPriority.Highest;thread2.Start();thread1.Start();}public void Task1(){for (int i = 0; i < 10; i++){Console.WriteLine("Download Moive");}}public void Task2(){for (int i = 0; i < 10; i++){Console.WriteLine("Download Book");}} }結(jié)果,雖然第2個線程先開始啟動,但還是第1個線程的任務(wù)先完成,當(dāng)然設(shè)置不同線程的優(yōu)先級效果會不同
掛起(Suspend)和恢復(fù)(Resume)線程
總而言之需要停下當(dāng)前工作,之后恢復(fù),示例如下
private Thread thread1; public Demo1() {thread1 = new Thread(new ThreadStart(Task1));thread1.Start();thread1.Suspend();Console.WriteLine("Stop");Thread.Sleep(1000);Console.WriteLine("Begin");thread1.Resume(); }public void Task1() {Console.WriteLine("Working"); }結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/Clingingboy/archive/2010/11/15/1877870.html
總結(jié)
- 上一篇: 中国网民达8.29亿 互联网普及率约
- 下一篇: 横空出世,席卷Csdn [评微软等公司数