zoukankan      html  css  js  c++  java
  • 多线程的Join()

    多线程的Join()

    一、简介

    Join方法主要是用来阻塞调用线程,直到某个线程终止或经过了指定时间为止。官方的解释比较乏味,通俗的说就是创建一个子线程,给它加了这个方法,其它线程就会暂停执行,直到这个线程执行完为止才去执行(包括主线程)。

    二、代码

      class Program
        {
            static void Main(string[] args)
            {
                Thread threadA = new Thread(ThreadMethod);      
                threadA.Name = "線程A";
                Thread threadB = new Thread(ThreadMethod);      
                threadB.Name = "線程B";
                threadA.Start();       
                //threadA.Join();      
                threadB.Start();       
                //threadB.Join();
    
                for (int i = 1; i <=3; i++)
                {
                    Console.WriteLine("我是:主線程,我循環{1}次", Thread.CurrentThread.Name, i);
                    Thread.Sleep(300);          //休眠300毫秒                                                
                }
                Console.ReadKey();
            }
            public static void ThreadMethod(object parameter)
            {
                for (int i = 1; i <=3; i++)
                {
                    Console.WriteLine("我是:{0},我循環{1}次", Thread.CurrentThread.Name, i);
                    Thread.Sleep(300);         //休眠300毫秒              
                }
            }
        }

    三、运行结果

    因为线程之间的执行是随机的,所有执行结果和我们想象的一样,杂乱无章!但是说明他们是同时执行的。

    现在我们把代码中的 ThreadA.join()和ThreadB.join()方法注释取消,首先程序中有三个线程,ThreadA、ThreadB和主线程,首先主线程先阻塞,然后线程ThreadB阻塞,ThreadA先执行,执行完毕以后ThreadB接着执行,最后才是主线程执行。


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    [转]ATOM 规范 中文版
    Silverlight 点滴(一) 获取定义在Generic.xaml或其他*.xaml中的对象
    [转]将WinCE5.0模拟器(emulator)连接到VS2005
    div+css布局实例淘宝分析(三)(2)
    介绍几款所见即所得的WEB在线编辑器
    cFos V7.52 简体中文破解版
    div+css布局实例淘宝分析(三)(1)
    div+css布局实例淘宝分析(一)
    中国水网开通了
    div+css布局实例淘宝分析(三)(3)
  • 原文地址:https://www.cnblogs.com/wml-it/p/14821327.html
Copyright © 2011-2022 走看看