寫在最前面
經常看到一些招聘上要求應聘者必須熟練掌握多線程,而對於我這個着實的菜鳥來說多線程這個概念雖然經常聽到,但是在實際操作中用的比較少,而且了解的也比較淺顯,所以乘着這休息的幾天天好好的學習學習,補上這方面的知識。
PS:本文只是多線程這方面學習的記錄,並不是對多線程的深入探討,如果你和我一樣對多線程不甚了解,可以和我一起共同學習噢。也歡迎各位大神批評指正,小弟不勝感激!
相關概念學習了解
對於概念這個東東,我歷來都不喜歡記,也老是記不住,我更願意結合概念和實際操作來讓它給我留下印象。但是學習前我們還是來看看幾個概念,讓它首先在我們腦海留下點影子再說。
進程:當一個程序開始運行時,它就是一個進程,進程包括運行中的程序和程序所使用到的內存和系統資源。而一個進程又是由多個線程所組成的。
線程:線程,有時被稱為輕量級進程,是程序執行流的最小單元。
多線程:線程是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。
多線程的利
多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率。線程是在同一時間需要完成多項任務的時候實現的。使用線程可以把耗時比較長的任務放到后台單獨開一個線程,使程序運行得更快。同時使用多線程可以開發出更人性化的界面,例如當我們提交某項數據的時候通過使用多線程顯示處理進度等效果。
最簡單的比喻多線程就像一個工廠的工人,而進程則是工廠的某個車間。工人離開車間就無法生產,同理車間也不可能只有一個員工。多線程的出現就是為了提高效率。
多線程的弊
更過的線程意味着更多的內存消耗;線程的退出可能會對程序帶來麻煩;處理不當造成更多的死鎖;過多的線程會影響性能(因為操作系統需要在各個線程間切換)
關於其利與弊
既然多線程有利又有弊,那么我們就該揚長避短,發揮它的好處,避開它的不利,在以后的學習過程中慢慢總結,定會弄清楚滴!
來看第一個多線程例子
我們寫多線程的代碼時一定要引入using System.Threading命名空間哦!
先來看個多線程的簡單例子吧,看看是個啥回事兒,具體深入的東東小弟在后面的博客再探討
1 using System; 2 using System.Threading; 3 4 namespace ConsoleApplication14 5 { 6 class Program 7 { 8 [STAThread] 9 static void Main(string[] args) 10 { 11 Console.WriteLine("測試我的線程開始"); 12 Thread test = new Thread(new ThreadStart(myThread)); 13 test.Start(); 14 Thread.CurrentThread.Name = "斷橋殘雪"; 15 Console.WriteLine(Thread.CurrentThread.Name + Thread.CurrentThread.ManagedThreadId); 16 Console.WriteLine("測試我的線程結束"); 17 Console.ReadLine(); 18 } 19 20 public static void myThread() 21 { 22 for (int i = 0; i < 100; i++) 23 { 24 Console.WriteLine(i); 25 } 26 } 27 } 28 }
輸出如下:

接下來在Console.WriteLine("測試我的線程結束");前加一行代碼后:
1 Thread.Sleep(1); 2 Console.WriteLine("測試我的線程結束");
運行截圖如下:

看了寫的代碼和運行結果是不是有點奇怪額,為啥我最后的一行代碼Console.WriteLine("測試我的線程結束");提前執行了呢?說句實話哈我現在也不能解釋得特別清楚,在后面的學習后我相信我可以回來解釋的。<此處留下一個大問號?>還有在代碼中使用了一個線程的屬性ManagedThreadId,在后面的學習中我會介紹更多這些相關屬性和方法,也希望各位大神看到不對的盡管拍磚,奮斗的小菜鳥是打不倒滴、、、
結語
接下來我會寫一系列的關於多線程隨筆,有興趣的園友也可以和我一同學習哈,歡迎歡迎!!!
馬上就要奔赴上海了,各種的不舍,各種的留戀。武漢別了,祝我愛我的和我愛的人天天開心,永遠健康快樂。
------如果你覺得此文對你有所幫助,別忘了點擊下右下角的推薦咯,謝謝!------
