知识大全 关于C#中Thread.Join()的一点理解

Posted 函数

篇首语:人生难得几回搏,此时不搏待何时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于C#中Thread.Join()的一点理解相关的知识,希望对你有一定的参考价值。

关于C#中Thread.Join()的一点理解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  今天是第一次在C#中接触Thread 自己研究了一下其中Thread Join()这个方法 下面谈谈自己的理解

  Thread Join()在MSDN中的解释很模糊 Blocks the calling thread until a thread terminates

  有两个主要问题

   什么是the calling thread?

   什么是a thread?

  首先来看一下有关的概念 我们执行一个 exe文件实际上就是开启了一个进程 同时开启了至少一个线程

  但是真正干活的是线程 就好比一个Team有好几个人 但是真正干活的是人不是Team

  具体到代码来说 以Console Application为例 程序Test exe从Main函数开始运行 实际上是有一个线程

  在执行Main函数 我们称作MainThread 假如我们在Main函数中声明了一个Thread 称作NewThread 并且调用了

  NewThread Start()的方法 那么 MainThread在处理Main函数里面的代码时遇到NewThread Start()时 就会去调用NewThread

  基于上面的讨论 我们可以得出结论 在我们刚才的例子中the calling thread就是MainThread 而a thread指的洽洽就是MainThread调用的NewThread线程

  现在回到MSDN的解释 我们可以这么翻译 当NewThread调用Join方法的时候 MainThread就被停止执行 直到NewThread线程执行完毕 这样就好理解了吧O(∩_∩)O哈哈~

  好了 前面分析完了 现在来看测试用例吧

  Title

  using System;

  using System Collections Generic;

  using System Linq;

  using System Text;

  using System Threading;

  namespace Test

  

  class TestThread

  

  private static void ThreadFuncOne()

  

  for (int i = ; i < ; i++)

  

  Console WriteLine(Thread CurrentThread Name +    i =  + i)

  

  Console WriteLine(Thread CurrentThread Name + has finished )

  

  static void Main(string[] args)

  

  Thread CurrentThread Name = MainThread ;

  Thread newThread = new Thread(new ThreadStart(TestThread ThreadFuncOne))

  newThread Name = NewThread ;

  for (int j = ; j < ; j++)

  

  if (j == )

  

  newThread Start()

  newThread Join()

  

  else

  

  Console WriteLine(Thread CurrentThread Name +    j =  + j)

  

  

  Console Read()

  

  

  

  下面是测试的结果

  结论 从测试中我们可以很清楚的看到MainThread在NewThread Join被调用后被阻塞 直到NewThread

cha138/Article/program/net/201311/11942

相关参考

知识大全 对于C#比较运算符==的一点想法

对于C#比较运算符==的一点想法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ==运算符用于比

知识大全 对C#泛型中的new()约束的一点思考

对C#泛型中的new()约束的一点思考  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于new

知识大全 C#中静态方法和动态方法的理解

C#中静态方法和动态方法的理解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  静态的方法在整个应

知识大全 理解.NET中Thread.Sleep()方法(C#)

理解.NET中Thread.Sleep()方法(C#)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 加深C# 中字符串前加@符号理解以及使用

加深C#中字符串前加@符号理解以及使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!先看代码(以下

关于我国书信的习惯和格式,下列理解不正确的一项是

关于我国书信的习惯和格式,下列理解不正确的一项是_____。A、一封书信一般应有“称呼”“正文”“祝语”“署名”“日期”等部分B、给老师写信,称呼部分如果连名带姓写上,就显得不够恭敬C、书信的“祝语”

知识大全 关于SGA设置的一点总结

关于SGA设置的一点总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本总结不针对特例仅对服务

知识大全 解析关于SQL语句Count的一点细节

解析关于SQL语句Count的一点细节  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!复制代码代码如

知识大全 关于MVC&Model2&Struts的一点看法

关于MVC&Model2&Struts的一点看法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

关于玉米的合理施肥的一点看法

在很多种植玉米的农民看来,施肥越多越好,其实这种观念是错误的,如果施肥超标,会让种子甚至是成熟的玉米“烧死”,每个地方的光照、温度、湿度等情况有所差别,所以施肥应该结合当地的气候环境来进行。对于阳高地