C#线程执行过程
classThreadTest {
booldone;
staticvoidMain() {
ThreadTest tt =
newThreadTest(); //
Create a common instance
newThread (tt.Go).Start();
tt.Go();
}
// Note that Go is now an instance method
voidGo() {
if(!done) { done = true; Console.WriteLine
("Done"); }
}
}
为什么这个程序的执行结果是输出一个“done”,怎么执行的,我是新手,请大师指教
答案:newThread (tt.Go).Start();
tt.Go();
Go方法会在两个线程中同时执行,但其实还是有先后顺序的,有两种情况:
(1)当一个线程执行了 done=true时,若第二个线程还在执行if(!done)显然它就不会再执行if里面的语句了!
(2)还有可能第一个线程执行完了if(!done)但是还没有执行done=true,这时第二线程执行if(!done)则它可以继续if里面的语句,这个时候就会 输出两行 Done了,不过这种几率比较小
你可以在 if(!done) { Thread.Sleep(2000); done = true; Console.WriteLine("Done");}
这样基本上每次都是 第(2)中情况。
其他:贴图吧,完全没看懂你写的嘛…… 不用解释了!直接打开下面的地址!
地【ωωω.8b9c.cōm】
址【ωωω.8b9c.cōm】
苎嘶镅喂pdmg
上一个:vs2010中的windows forms 添加一个menustrip 然后给菜单命名为“关于”,请问如何才能点击弹出一个对话框
下一个:asp.net中利用textbox显示数据库中某个字段值(vb)