C# 多线程join的用法,等待多个子线程结束后再执行主线程
2015-05-19 23:31
435 查看
等待多个子线程结束后再执行主线程
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
}
自己建一个控制台程序进行测试吧!希望能对你有所启发!
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
}
自己建一个控制台程序进行测试吧!希望能对你有所启发!
相关文章推荐
- 主线程中使用join等待所有子线程执行结束
- 【多线程】 join 的用法(子线程执行完,执行主线程)
- Java基础多线程之join抢夺CPU执行权直到该线程结束。
- Java多线程--让主线程等待所有子线程执行完毕【转】
- C# 等待Process结束再执行主线程
- 进阶篇:等待多个子线程完毕再执行主线程的方法之CountDownLatch(十二)
- CountDownLatch实现主线程等待所有子线程运行结束后再继续执行的实现
- Java多线程--让主线程等待所有子线程执行完毕
- Java多线程--让主线程等待所有子线程执行完毕
- 多个子线程并发执行,主线程等待所有子线程都结束后再继续运行
- Java多线程--让主线程等待所有子线程执行完毕代码
- Java并发:主线程等待多个子线程执行完才继续执行
- Java多线程--让主线程等待所有子线程执行完毕
- [置顶] [转]Java多线程--让主线程等待所有子线程执行完毕
- Java多线程--让主线程等待所有子线程执行完毕
- .Net最简单的创建多线程主线程等待所有线程执行完成的例子
- C#主线程等待子线程运行结束
- Java多线程--让主线程等待所有子线程执行完毕
- Java多线程--让主线程等待所有子线程执行完毕在执行
- java多线程实现主线程等待所有子线程执行完毕