zoukankan      html  css  js  c++  java
  • 多线程小结(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("主线程结束");

  • 相关阅读:
    论二级域名收集的各种姿势
    我喜欢你是寂静的-聂鲁达
    早晨充满-聂鲁达
    KALI Linux更新源
    lodash throttle和debounce
    lodash capitalize 首字母大写
    C# 格式化百分比
    c# PadLeft,PadRight用法
    对象名 XXX 无效。
    lambda 分组后的count
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/9030345.html
Copyright © 2011-2022 走看看