zoukankan      html  css  js  c++  java
  • Part 92 Significance of Thread Join and Thread IsAlive functions

    Thread.Join & Thread.IsAlive functions

    Join blocks the current thread and makes it wait until the thread on which Join method is invoked completes.Join method also has a overload where we can specify the timeout. If we don't specify the timeout the calling thread waits indefinitely(无限期地), until the thread on which Join() is invoked completes. This overloaded Join(int millisecondesTimeout) method returns boolean. True if the thread has terminated(终止) otherwise false.

    Join is particularly(特别地) useful when we need to wait and collect result from a thread execution or if we need to do some clean-up after the thread has completed.

    IsAlive returns boolean. True if the thread is still executing otherwise false.

    public static void Main(string[] args)
            {
                Console.WriteLine("main start");
                Thread t1 = new Thread(ThreadFunction1);
                t1.Start();
                Thread t2 = new Thread(ThreadFunction2);
                t2.Start();
                if(t1.Join(1000))
                {
                    Console.WriteLine("threadfunction1 end");
                }
                else
                {
                    Console.WriteLine("threadfunction1 still working");
                }
                if(t1.IsAlive)
                {
                    for (int i = 1; i < 10; i++)
                    {
                        Console.WriteLine("threadfunction1 still working...");
                        Thread.Sleep(500);                    
                    }
                }
                Console.WriteLine("main end");
            }
    
            public static void ThreadFunction1()
            {
                Console.WriteLine("threadfunction1 start");
                Thread.Sleep(5000);
                Console.WriteLine("threadfunction1 end");
            }
    
            public static void ThreadFunction2()
            {
                Console.WriteLine("threadfunction2 start");
            }
  • 相关阅读:
    进程和线程
    进程通信、同步与调度
    文件和文件系统
    【nexys3】【verilog】小设计——拆弹游戏
    Qt4开发环境搭建(Qt4.8.7+mingw4.8.2+Qt Creator4.2.0)
    GPL和LGPL
    【rpi】使用putty远程连接rpi(ssh)
    mysql 命令 小结
    安装mysql zip 安装包 Navicat连接
    python虚拟环境 virtualenv工具
  • 原文地址:https://www.cnblogs.com/gester/p/4870446.html
Copyright © 2011-2022 走看看