zoukankan      html  css  js  c++  java
  • C#多线程JOIN方法初探

    [说明:刚接触多线程时,弄不明白Join()的作用,查阅了三本书,都不明不白。后来经过自己的一番试验,终于弄清了Join()的本质。大家看看我这种写法是否易懂,是否真的写出了Join()的本质,多提宝贵意见。]

      Thread类的Join()方法能够将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,线程A将插入线程B之前,直到线程A执行完毕后,才会继续执行线程B。

      试一试:线程的插入

      //《C#初学课堂
        //注意添加命名空间
        using System.Threading;
      
        static void Main(string[] args)
        {
          //线程A
          Thread ThreadA = new Thread(delegate()
          {
            for (int i = 0; i <= 100000000; i++)
            {
              if (i % 1000000 == 0)
              {
                Console.Write('A');
              }
            }
          });
      
          //线程B
          Thread ThreadB = new Thread(delegate()
          {       
            for (int i = 0; i <= 50000000; i++)
            {
              if (i % 1000000 == 0)
              {
                Console.Write('B');
              }
            }
      
            //在这里插入线程A
            ThreadA.Join();
      
            for (int i = 0; i <= 50000000; i++)
            {
              if (i % 1000000 == 0)
              {
                Console.Write('b');
              }
            }
          });
      
          //启动线程
          ThreadA.Start();
          ThreadB.Start();
        }

      运行结果如下,你能分析清楚为什么吗?

    由运行结果可以看出,一开始两个线程交替进行,当线程B执行到语句“ThreadA.Join()”时,线程A被插入到线程B之前,两个线程合并到一起,变为顺序执行,直到执行完线程A中的所有语句,才去执行线程B中剩余的语句。

      换句话说,当我们在线程B中调用ThreadA.Join()时,该方法只有在线程ThreadA执行完毕之后才会返回。Join()函数还可以接受一个表示毫秒数的参数,当达到指定时间后,如果线程A还没运行完毕,那么Join函数将返回,这时线程A和线程B再次处于交替运行状态中。

    http://www.cnblogs.com/millen/archive/2009/09/07/1520353.html

  • 相关阅读:
    [Swift]LeetCode241. 为运算表达式设计优先级 | Different Ways to Add Parentheses
    [Swift]LeetCode240. 搜索二维矩阵 II | Search a 2D Matrix II
    使用ADO.NET对SQL Server数据库进行訪问
    JavaScript中面向对象那点事
    总结文件操作函数(二)-C语言
    UVa
    深入研究java.lang.Object类
    TCP/IP具体解释--TCP/IP可靠的原理 滑动窗体 拥塞窗体
    W5500EVB UDP模式的測试与理解
    仿新浪首页、主题、详情页,纯html静态页面
  • 原文地址:https://www.cnblogs.com/hackpig/p/1668376.html
Copyright © 2011-2022 走看看