常常看到一些招聘上要求應聘者必須熟練掌握多線程,而對於我這個着實的菜鳥來講多線程這個概念雖然常常聽到,可是在實際操做中用的比較少,並且瞭解的也比較淺顯,因此乘着這休息的幾每天好好的學習學習,補上這方面的知識。多線程
PS:本文只是多線程這方面學習的記錄,並非對多線程的深刻探討,若是你和我同樣對多線程不甚瞭解,能夠和我一塊兒共同窗習噢。也歡迎各位大神批評指正,小弟不勝感激!性能
對於概念這個東東,我從來都不喜歡記,也總是記不住,我更願意結合概念和實際操做來讓它給我留下印象。可是學習前咱們仍是來看看幾個概念,讓它首先在咱們腦海留下點影子再說。學習
進程:當一個程序開始運行時,它就是一個進程,進程包括運行中的程序和程序所使用到的內存和系統資源。而一個進程又是由多個線程所組成的。測試
線程:線程,有時被稱爲輕量級進程,是程序執行流的最小單元。spa
多線程:線程是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不一樣的工做,稱爲多線程。操作系統
多線程是爲了同步完成多項任務,不是爲了提升運行效率,而是爲了提升資源使用效率來提升系統的效率。線程是在同一時間須要完成多項任務的時候實現的。使用線程能夠把耗時比較長的任務放到後臺單獨開一個線程,使程序運行得更快。同時使用多線程能夠開發出更人性化的界面,例如當咱們提交某項數據的時候經過使用多線程顯示處理進度等效果。線程
最簡單的比喻多線程就像一個工廠的工人,而進程則是工廠的某個車間。工人離開車間就沒法生產,同理車間也不可能只有一個員工。多線程的出現就是爲了提升效率。code
更過的線程意味着更多的內存消耗;線程的退出可能會對程序帶來麻煩;處理不當形成更多的死鎖;過多的線程會影響性能(由於操做系統須要在各個線程間切換)blog
既然多線程有利又有弊,那麼咱們就該揚長避短,發揮它的好處,避開它的不利,在之後的學習過程當中慢慢總結,定會弄清楚滴!進程
咱們寫多線程的代碼時必定要引入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,在後面的學習中我會介紹更多這些相關屬性和方法,也但願各位大神看到不對的儘管拍磚,奮鬥的小菜鳥是打不倒滴、、、
接下來我會寫一系列的關於多線程隨筆,有興趣的園友也能夠和我一同窗習哈,歡迎歡迎!!!
立刻就要奔赴上海了,各類的不捨,各類的留戀。武漢別了,祝我愛個人和我愛的人每天開心,永遠健康快樂。
------若是你以爲此文對你有所幫助,別忘了點擊下右下角的推薦咯,謝謝!------