博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 多线程join的用法,等待多个子线程结束后再执行主线程
阅读量:6408 次
发布时间:2019-06-23

本文共 1041 字,大约阅读时间需要 3 分钟。

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

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
}

 

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

转载地址:http://rtqea.baihongyu.com/

你可能感兴趣的文章
configure,make,make install的作用
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Java提升-单例模式、享元模式以及IntelliJ IDEA15的使用(七)
查看>>
uva 10341 - Solve It
查看>>
ZF2自动注册Controller
查看>>
QT历程(一):与CryptoJs对应的AES加密
查看>>
软件工程师的鄙视链
查看>>
IOS 系统基站定位
查看>>
QTP的历史
查看>>
使用纯Perl语言(不需要任何模块)编写生成验证码图片的程序
查看>>
超详细 Spring @RequestMapping 注解使用技巧
查看>>
样条表示---样条曲面
查看>>
可见面判别算法---深度缓存算法
查看>>
根据子节点 获取多级上层节点 sql server
查看>>
GitHub 优秀的 Android 开源项目
查看>>
Map主动通知线程消费
查看>>
用Java代码打印PDF
查看>>
Python中DocStrings注意事项
查看>>
【原创】rabbitmq-server用户手册(翻译)
查看>>
Oracle检验点(checkpoint)和检验点进程
查看>>