C# thread的join方法使用解析
来源:互联网 发布:淘宝制作假护照 编辑:程序博客网 时间:2024/06/05 14:43
在C#中,Thread用的是比较多的,至少在windows form中使用是比较频繁的。
一说到线程,可能马上就会想到界面和线程交互的头疼事,多线程之前数据共享,线程异步等等。这些当然是比较头疼的,只要有信心 ,慢慢来,相信理解不是难事。
对于Thread中的join方法,主要是用来阻塞当前线程,等待子线程完成后再进行运行。
也就是其实所谓的线程合并。比如说主线程派生了子线程,如果想让子线程完成之前主线程等待,就需要利用join来进行阻塞。
下面来看下具体代码:
using System;using System.Windows.Forms;using System.Threading;namespace WindowsFormsApplication1{ public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { Thread t =new Thread(new ThreadStart(ShowInfo)); for (int j =0; j <20; j++) { if (j ==10) { t.Start(); //开始线程 t.Join(); //阻塞当前线程 等待t完成后,再继续 } else { Console.WriteLine("j="+ j); } } } private void ShowInfo() { for (int i =0; i <10; i++) { Console.WriteLine("i="+ i); } } }}
那么从上面代码可以猜测出开始输出的是j从0到9,然后由于线程阻塞,开始输出i,从0到9,最后输出j从11到20,运行结果如下:
但是如果我们不用join方法的时候,会是什么结果呢?按照猜想,主线程和子线程将会各自运行各的。也就是在输出j从0到9后,后面的将是乱序输出,请看结果:
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
下面再更新一个例子上去,这个比较简单一些。
当然开始是添加了join的时候:
得到的结果如下:
但是如果去掉join方法,就会出现下面的结果:
可以看出join结果的作用了吧。目的就是让主线程阻塞,运行主线程,子线程运行完成,主线程再开始,其实本质上说,就是形成一个线程来执行。
0 0
- C# thread的join方法使用解析
- Thread的join方法使用
- 使用Thread的join()方法
- Thread.join()方法的使用
- Thread.join()方法解析
- Thread.join()方法解析
- Thread.join()方法解析
- C#中的Thread类的Join()方法
- C# 线程Thread的Join()方法
- C# 线程Thread的Join()方法
- Thread类中的join方法的使用
- Thread类的join方法使用
- Thread中join方法的使用分析
- Thread的join()方法
- Thread的join()方法
- Thread的join方法
- Thread.join()的使用
- Thread.join()的使用
- URAL1056(树的直径)
- 文件不小心彻底删除了怎么恢复
- spark 框架分析 (一)
- Android 具有反弹效果的ScrollView
- windows下查看某个端口被哪个程序占用的方法
- C# thread的join方法使用解析
- BCD码
- JAVA的StringBuffer类
- 经典c程序(0022)---杂乱的5X5的数组变盘蛇形
- 做一个接收的缓冲,cup空闲时刻处理缓冲数据
- 你是否混谈MVC和三层?
- TestDriven.NET 怎么设置快捷键keyboard shortcut
- C++应用程序的编译过程和模板类的编译过程
- [JAVA] [StringUtils] 工具类的方法解释