[介绍说明:刚接触多线程时弄不明白Join作用查阅了 3本书都不明不白后来经过自己番试验终于弄清了Join本质大家看看我这种写法是否易懂是否真写出了Join本质多提宝贵意见]
Thread类Join思路方法能够将两个交替执行线程合并为顺序执行线程比如在线程B中了线程AJoin思路方法
Thread类Join思路方法能够将两个交替执行线程合并为顺序执行线程比如在线程B中了线程AJoin思路方法
线程A将插入线程B的前直到线程A执行完毕后才会继续执行线程B
试试:线程插入
//C#初学课堂
//注意添加命名空间
using .Threading;
void Main( args)
{
//线程A
Thread ThreadA = Thread(delegate
{
for ( i = 0; i <= 100000000; i)
{
(i % 1000000 0)
{
Console.Write('A');
}
}
});
//线程B
Thread ThreadB = Thread(delegate
{
for ( i = 0; i <= 50000000; i)
{
(i % 1000000 0)
{
Console.Write('B');
}
}
//在这里插入线程A
ThreadA.Join;
for ( i = 0; i <= 50000000; i)
{
(i % 1000000 0)
{
Console.Write('b');
}
}
});
//启动线程
ThreadA.Start;
ThreadB.Start;
}
运行结果如下你能分析清楚为什么吗?
Join思路方法" />
由运行结果可以看出开始两个线程交替进行当线程B执行到语句“ThreadA.Join”时线程A被插入到线程B的前两个线程合并到起变为顺序执行直到执行完线程A中所有语句才去执行线程B中剩余语句
试试:线程插入
//C#初学课堂
//注意添加命名空间
using .Threading;
void Main( args)
{
//线程A
Thread ThreadA = Thread(delegate
{
for ( i = 0; i <= 100000000; i)
{
(i % 1000000 0)
{
Console.Write('A');
}
}
});
//线程B
Thread ThreadB = Thread(delegate
{
for ( i = 0; i <= 50000000; i)
{
(i % 1000000 0)
{
Console.Write('B');
}
}
//在这里插入线程A
ThreadA.Join;
for ( i = 0; i <= 50000000; i)
{
(i % 1000000 0)
{
Console.Write('b');
}
}
});
//启动线程
ThreadA.Start;
ThreadB.Start;
}
运行结果如下你能分析清楚为什么吗?
Join思路方法" />
由运行结果可以看出开始两个线程交替进行当线程B执行到语句“ThreadA.Join”时线程A被插入到线程B的前两个线程合并到起变为顺序执行直到执行完线程A中所有语句才去执行线程B中剩余语句
换句话说当我们在线程B中ThreadA.Join时该思路方法只有在线程ThreadA执行完毕的后才会返回Join还可以接受个表示毫秒数参数当达到指定时间后如果线程A还没运行完毕那么Join将返回这时线程A和线程B再次处于交替运行状态中
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203206,如需转载请自行联系原作者