`

C#中Thread类中Join方法的理解(转载)

    博客分类:
  • C#
阅读更多
指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行  
  比如  

 using System;

 namespace TestThreadJoin
 {
     class Program
     {
         static void Main()
         {
             System.Threading.Thread x = new System.Threading.Thread(new System.Threading.ThreadStart(f1));
            x.Start();
            Console.WriteLine("This is Main.{0}", 1);
            x.Join();
            Console.WriteLine("This is Main.{0}", 2);
            Console.ReadLine();
        }
        static void f1()
        {
            System.Threading.Thread y = new System.Threading.Thread(new System.Threading.ThreadStart(f2));
            y.Start();
            y.Join();
            Console.WriteLine("This is F1.{0}",1);
        }

        static void f2()
        {
            Console.WriteLine("This is F2.{0}", 1);
        }
    }
}


这儿有三个线程在处理(包括主线程),大家可看看执行结果.
结果:
This is Main.1
This is F2.1
This is F1.1
This is Main.2

如果: 注释//  x.Join();
结果:
This is Main.1
This is Main.2
This is F2.1
This is F1.1
分享到:
评论

相关推荐

    关于C#中Thread.Join()的一点理解

    是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解。  Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread terminates  有两个主要问题: ...

    C#多线程学习 Thread类使用 线程等编程方法

    System.Threading命名空间中的Thread类是实现多线程的基础,提供了创建、控制和管理线程的方法。本文将深入探讨C#多线程编程,包括Thread类的使用以及线程同步的相关知识。 ### 1. Thread类介绍 Thread类是C#中处理...

    C#多线程之Thread中Thread.IsAlive属性用法分析

    `Thread`类是.NET框架提供的用于创建和管理线程的核心类。其中,`Thread.IsAlive`属性是一个非常重要的成员,它允许开发者检查线程的当前状态,以确定线程是否已经启动并且仍在运行。在理解`Thread.IsAlive`属性的...

    C#多线程之Thread中Thread.Join()函数用法分析

    本文实例讲述了C#多线程之Thread中Thread.Join()函数用法。分享给大家供大家参考。具体分析如下: Thread.Join()在MSDN中的解释:Blocks the calling thread until a thread terminates 当NewThread调用Join方法的...

    Thread实例( C# )

    `Thread`类提供了创建、管理和同步线程的方法,是C#编程中进行多线程操作的基础。在ASP.NET和C#应用程序中,理解并熟练使用`Thread`可以帮助开发者实现更高效的并发处理,提升程序性能。 1. **线程创建** 创建一个...

    worker_thread_class.zip_c# Thread类_event class

    在"worker_thread_class.zip_c# Thread类_event class"这个压缩包中,我们可能找到了一个名为`ThreadGenerator`的项目,它封装了线程和事件类,以便更有效地控制线程和处理事件。 首先,`Thread` 类是C#中实现多...

    c# 线程(thread)同步处理

    ### C# 线程(Thread)同步处理详解 在.NET平台上进行多线程编程时,线程同步是一项至关重要的技术。线程同步的主要目的是确保多个线程在访问共享资源时不会产生数据竞争和不一致的情况。本文将详细介绍C#中的几种...

    C#thread线程类[定义].pdf

    C#中的`Thread`类是.NET Framework 2.0及更高版本中用于创建和管理线程的核心类,位于`System.Threading`命名空间内,并在`mscorlib.dll`程序集中。线程是程序执行的独立路径,允许同一进程内同时运行多个代码段。...

    C#语言多线程初步理解

    此外,`Thread.Join`方法用于等待特定线程完成,而`Thread.Abort`可以强制终止线程,但这通常是不推荐的,因为它可能导致未捕获的异常和资源泄漏。更安全的方法是设置一个取消标志,让线程在检查到这个标志后自行...

    C# ThreadPool和join最基本操作示例

    通过线程池,可以直接从池中查找出空闲线程,让它执行委托WaitCallback对应函数来执行相关操作。使用时要与AutoResetEvent来并用,以在线程结束时通知主线程退出; 使用线程池来找到一个线程执行函数,实质减少了...

    在C#中实现创建多线程.rar

    - C#中的`System.Threading.Thread`类是创建和管理线程的主要类。你可以通过实例化`Thread`类并传入一个`ThreadStart`委托来创建一个新的线程。`ThreadStart`是一个无参数的方法,它定义了新线程要执行的代码。 ``...

    c#线程结束后,实现的委托回调函数源码

    为了在线程结束时执行回调,我们可以使用`Thread.Join()`方法等待线程完成,或者使用`ThreadPool`类的异步执行。 委托回调的核心在于定义一个委托类型,它代表要调用的方法的签名。例如,我们可以创建一个名为`...

    Threading in C#中文.7z

    1. **Thread 类**:这是C#中最基本的线程类,通过实例化Thread对象并调用Start方法可以创建和启动一个新的线程。Thread类提供了属性如Name来标识线程,以及方法如Join、Sleep和Abort来控制线程行为。 2. **...

    c_thread.rar_C# Thread_进程_进程管理

    1. `Thread`类:这是C#中创建和管理线程的核心类。通过实例化`Thread`并传递一个`ThreadStart`或`ParameterizedThreadStart`委托,我们可以启动新线程执行指定的方法。 2. `Start`方法:调用`Thread`对象的`Start`...

    在C#中编写多线程应用程序

    在.NET框架中,可以通过`System.Threading`命名空间下的`Thread`类来创建线程。下面通过一个具体的例子来展示如何创建一个简单的线程: ```csharp using System; using System.Threading; public class ...

    C# 多线程的同步与互斥(使用Mutex和Event)

    在C#中,Mutex类提供了WaitOne()和ReleaseMutex()方法,前者用于获取锁,后者用于释放锁。如果一个线程已经持有Mutex,其他尝试获取锁的线程将被阻塞,直到当前线程释放锁。这样可以避免数据竞争,保证共享资源的...

    C#常用类库 (调用方法)

    10. 文本和字符串操作:String类提供了丰富的字符串处理方法,如Split、Join、Replace等。Regex类则用于执行正则表达式匹配和替换。 11. HTML处理:HtmlAgilityPack库是一个强大的HTML解析器,用于解析和操作HTML...

    C#多线程编程实战_中文完整版

    在C#中,可以使用System.Threading命名空间中的Thread类来创建和管理线程。创建新线程通常通过实例化Thread类并传递一个委托(代表要执行的方法)来完成。 二、线程同步与互斥 在多线程环境中,数据共享可能导致竞...

    thread_control

    在C#中,我们可以使用`System.Threading`命名空间中的`Thread`类来创建和管理线程。创建新线程的基本方式是通过实例化`Thread`类,并提供一个代表线程入口点的方法。 ```csharp Thread thread = new Thread(new ...

Global site tag (gtag.js) - Google Analytics