zoukankan      html  css  js  c++  java
  • C# 多线程join的用法,等待多个子线程结束后再执行主线程

    等待多个子线程结束后再执行主线程

    class MultiThread
    {
      #region join test
      public void MultiThreadTest()
      {
        Thread[] ths = new Thread[2];
        ths[0] = new Thread(Method1);
        ths[1] = new Thread(Method2);
        foreach (Thread item in ths)
        {
          //首先让所有线程都启动
          item.Start();
          //试想一下在这里加上item.Join()可以达到我们所需要的效果吗?
          //A:如果这阻塞了线程(启动item线程的线程,也就是主线程),那么启动了第一个线程之后
          //主线程被阻塞,待线程1被执行完的时候再启动先一个线程。那么多线程就失去了意义,变成了同步。
        }
        foreach (Thread item in ths)
        {
          //数组中的所有子线程都对主线程进行阻塞,只是阻塞了启动
          item.Join();
          Thread.Sleep(1000);//用它来证明主线程是在启动了每一个子线程后才sleep的
        }
        Method3();
      }

      private void Method1()
      {
        for (int i = 0; i < 10; i++)
        {
          Console.WriteLine("A");
          Thread.Sleep(300);
        }
      }
      private void Method2()
      {
        for (int i = 0; i < 10; i++)
        {
          Console.WriteLine("B");
          Thread.Sleep(300);
        }
      }

      private void Method3()
      {
        for (int i = 0; i < 10; i++)
        {
          Console.WriteLine("C");
          Thread.Sleep(300);
        }
      }
      #endregion
    }

    自己建一个控制台程序进行测试吧!希望能对你有所启发!

  • 相关阅读:
    Sun:收购MySQL是现代软件史上最重要收购[ZT]
    SCI2012年收录的中文期刊
    Elsevier期刊投稿状态
    医学图像SCI
    贝叶斯法则,先验概率,后验概率,最大后验概率
    医学图像处理与分析方面的大牛
    2013 EI检索的国内期刊
    ICIP EMBC IUS 2013
    香港中文大学第六十九届颁授学位典礼 校长赠言 我默祷你们都能不负此生
    自动生成参考文献编号
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/4515937.html
Copyright © 2011-2022 走看看