网站界面设计内容,邵阳市最新消息,设计师网络设计平台,阿里企业邮箱个人登录[说明#xff1a;刚接触多线程时#xff0c;弄不明白Join()的作用#xff0c;查阅了三本书#xff0c;都不明不白。后来经过自己的一番试验#xff0c;终于弄清了Join()的本质。大家看看我这种写法是否易懂#xff0c;是否真的写出了Join()的本质#xff0c;多提宝贵意见…[说明刚接触多线程时弄不明白Join()的作用查阅了三本书都不明不白。后来经过自己的一番试验终于弄清了Join()的本质。大家看看我这种写法是否易懂是否真的写出了Join()的本质多提宝贵意见。] Thread类的Join()方法能够将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法线程A将插入线程B之前直到线程A执行完毕后才会继续执行线程B。 试一试线程的插入 //《C#初学课堂》 //注意添加命名空间 using System.Threading; static void Main(string[] args) { //线程A Thread ThreadA new Thread(delegate() { for (int i 0; i 100000000; i) { if (i % 1000000 0) { Console.Write(A); } } }); //线程B Thread ThreadB new Thread(delegate() { for (int i 0; i 50000000; i) { if (i % 1000000 0) { Console.Write(B); } } //在这里插入线程A ThreadA.Join(); for (int i 0; i 50000000; i) { if (i % 1000000 0) { Console.Write(b); } } }); //启动线程 ThreadA.Start(); ThreadB.Start(); } 运行结果如下你能分析清楚为什么吗 由运行结果可以看出一开始两个线程交替进行当线程B执行到语句“ThreadA.Join()”时线程A被插入到线程B之前两个线程合并到一起变为顺序执行直到执行完线程A中的所有语句才去执行线程B中剩余的语句。 换句话说当我们在线程B中调用ThreadA.Join()时该方法只有在线程ThreadA执行完毕之后才会返回。Join()函数还可以接受一个表示毫秒数的参数当达到指定时间后如果线程A还没运行完毕那么Join函数将返回这时线程A和线程B再次处于交替运行状态中。 http://www.cnblogs.com/millen/archive/2009/09/07/1520353.html