多线程小结(1)
原文出處
定義就不多說了,直接上代碼
1 /// <summary> 2 /// 單線程應用 3 /// </summary> 4 class Program 5 { 6 static void Main(string[] args) 7 { 8 Console.WriteLine("進入主線程"); 9 User u = new User("小剛"); 10 u.Getshow(); 11 Console.WriteLine("主線程結束"); 12 } 13 } 14 public class User 15 { 16 private string name; 17 public User(string name) 18 { 19 this.name = name; 20 } 21 public void Getshow() 22 { 23 Console.WriteLine("Name=>" + name); 24 } 25 } View Code這樣的一個控制臺程序,他就包含了一個線程,這個線程是由系統自動分配給他的,也就是主線程。
是從入口函數Main方法開始主線程,進行順序控制流程。程序到達GetShow時候線程轉到該方法內部執行,當該方法內部執行完成之后在回到Main方法里面。繼續順序執行下面的輸出Console.WriteLine("主線程結束");執行流程如下。這也就是為啥說是單線程了,只會走一條道。
現在開啟一個多線程執行GetShow里面的行為,不采用主線程執行
(這句話的意思是再從系統中拉出來一個線程,去執行其他的方法;不會與主線程搶占“人力”)
?
1 /// <summary> 2 /// 多線程應用 3 /// </summary> 4 class Program 5 { 6 static void Main(string[] args) 7 { 8 Console.WriteLine("進入主線程"); 9 User u = new User("小剛"); 10 Thread subthread = new Thread(new ThreadStart(u.Getshow));//創建新線程 11 subthread.Start(); //開啟線程 12 Console.WriteLine("主線程結束"); 13 } 14 } 15 16 public class User 17 { 18 private string name; 19 public User(string name) 20 { 21 this.name = name; 22 } 23 public void Getshow() 24 { 25 Console.WriteLine("Name=>" + name); 26 } 27 } 再開啟一個線程在主線程里面,新開了一個線程,去執行Getshow方法里面的操作。
主線程創建新的線程以后,不會等待Getshow里面的代碼執行完畢。//相當于系統又給他分配了一個干活的幫手,倆人齊頭并進同時把事干完,但是誰先完成不一定。也可能是主線程也可能是新來的幫手先完成
而是直接執行后面的代碼:Console.WriteLine("主線程結束");
?
轉載于:https://www.cnblogs.com/ZkbFighting/p/9030345.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 1055 - Expression #1
- 下一篇: Java DO到DTO转换利用sprin