C# 多线程join的用法,等待多个子线程结束后再执行主线程
等待多个子线程结束后再执行主线程
class MultiThread
{
#region join test
public void MultiThreadTest()
{
Thread[] ths = new Thread[2];
ths[0] = new Thread(Method1);
ths[1] = new Thread(Method2);
foreach (Thread item in ths)
{
//首先让所有线程都启动
item.Start();
//试想一下在这里加上item.Join()可以达到我们所需要的效果吗?
//A:如果这阻塞了线程(启动item线程的线程,也就是主线程),那么启动了第一个线程之后
//主线程被阻塞,待线程1被执行完的时候再启动先一个线程。那么多线程就失去了意义,变成了同步。
}
foreach (Thread item in ths)
{
//数组中的所有子线程都对主线程进行阻塞,只是阻塞了启动
item.Join();
Thread.Sleep(1000);//用它来证明主线程是在启动了每一个子线程后才sleep的
}
Method3();
}
private void Method1()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("A");
Thread.Sleep(300);
}
}
private void Method2()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("B");
Thread.Sleep(300);
}
}
private void Method3()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("C");
Thread.Sleep(300);
}
}
#endregion
}
自己建一个控制台程序进行测试吧!希望能对你有所启发!
C# 多线程join的用法,等待多个子线程结束后再执行主线程的更多相关文章
- Java Thread.join()详解--父线程等待子线程结束后再结束
目录(?)[+] 阅读目录 一.使用方式. 二.为什么要用join()方法 三.join方法的作用 join 四.用实例来理解 打印结果: 打印结果: 五.从源码看join()方法 join是Th ...
- Python多线程join的用法
import threading, time def Myjoin(): print 'hello world!' time.sleep(1) for i in range(5): t=threadi ...
- 等待某(N)个线程执行完再执行某个线程的几种方法(Thread.join(),CountDownLatch,CyclicBarrier,Semaphore)
1.main线程中先调用threadA.join() ,再调用threadB.join()实现A->B->main线程的执行顺序 调用threadA.join()时,main线程会挂起,等 ...
- join当前线程等待指定的线程结束后才能继续运行
模拟一个QQ游戏大厅斗地主 /** sleep(休眠.睡眠) join当前线程等待指定的线程结束后才能继续运行 */ class Player extends Thread{ private Stri ...
- java 多线程——join()方法
在java语言中,join()方法的作用是让调用该方法的线程在执行完run()方法后,再执行join 方法后面的代码. 简单点说就是,将两个线程合并,用于实现同步的功能. 具体而言:可以通过线程A的j ...
- 如何让线程A等待B执行结束后执行?
1. 使用条件变量 判断是否任务B已经做完,然后再执行任务A. 测试代码可看:https://blog.csdn.net/guochao6531/article/details/78075882 2. ...
- 使用join和CountDownLatch来等待线程结束
1.join方法的实现 join只能在start()之后调用, join 某个线程A,会使当前线程B进入等待,直到线程A结束生命周期(isAlive()==false) ,或者达到给定的时间. 在此期 ...
- Java多线程 -join用法
阿里面试官问我这个问题,我仔细总结了一下: 参考:sleep.yield.wait.join的区别(阿里面试) 1. join()介绍 join() 定义在Thread.java中.join() 的作 ...
- 你能说出多线程中sleep、yield、join的用法及sleep与wait区别?
Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...
随机推荐
- NOIP2000方格取数[DP]
题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 ...
- 高大上的uGUI正式版发布了
uGUI发布啦 本周期待已久的New UI System 发布了,因为这段时间项目是开发期,所以比较忙,也就没过多关注新UI了,趁着周六日有空,来瞅瞅这高大上的New UI System. PS:我也 ...
- Windows 10 UWP开发:如何不让界面卡死
http://edi.wang/post/2016/2/18/windows-10-uwp-async-await-ui-thread 关于UI线程 这里我们需要一点关于 UI 线程模型的概念,简单的 ...
- 转:大气炫酷焦点轮播图js特效
使用方法 Step 1. 在html的标签内引入相关文件 <script type="text/javascript" src="js/myfocus-2.0.0. ...
- git的两本推荐书
1. pro git, 可以网页直接看 http://iissnan.com/progit/?spm=5176.100239.blogcont5843.18.nUJDcK 2. Git权威指南 < ...
- sublime text2安装package control的方法
Package Control 方法一:在线安装,首先打开 Ctrl + ~,输入如下的代码: import urllib2,os; pf='Package Control.sublime-packa ...
- 開博客了, 因為搞Delphi 開發的關於Delphi學習
開博客了, 因為搞Delphi 開發的關於Delphi學習,之前都是用本地TXT文件保存,發現在本地電腦保存非常不方面,而且只能在一台電腦上保存,不容易查看和修改內容.便於以後的記錄只用,以及經驗交流 ...
- python里的del变量无法立刻释放内存的解决办法
最近在python开发的时候,用到了一些很占用内存的操作,导致后续程序执行很慢甚至无法执行.探索了一下,最终解决了这个问题. 截图解释: python变量占用了内存,仅仅通过del变量的方式,只是让这 ...
- .NET Core)的ZooKeeper异步客户端
支持断线重连.永久watcher.递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端 阅读目录 什么是ZooKeeper? 项目介绍 提供的功能 使用说明 FAQ 在公司内部 ...
- Java 基础【10】 I/O流概念分析整理
转载地址:http://blog.csdn.net/yuebinghaoyuan/article/details/7388059 java.io 中的流,可以从不同的角度进行分类. 按照数据流的方向不 ...