Topic: 求教:一个多线程执行过程的疑问,关于sleep()方法的相关。 |
Print this page |
1.求教:一个多线程执行过程的疑问,关于sleep()方法的相关。 | Copy to clipboard |
Posted by: drxjava Posted on: 2004-10-26 20:52 {请您活用编辑功能使您的内容更易读,谢谢} 先看看下面的代码: class Producer implements Runnable ------------------------------------------------------------ 运行结果是:开始是输出:“张三:unknown”几次以后就输出为:“张三:女”,而且一直这样执行下去好多的。 疑问1:为什么线程完成了sleep()以后,张三后面的“男”没有机会执行呢?就直接的到了“女”呢?难道是try{Thread.sleep(1);}catch(Exception e){}后面的 q.sex="男"; 没有得到执行吗?怎么会呢? 疑问2:为什么 它:else { q.name="李四"; q.sex="女"; } 象是没有被执行似的呢?但是它应该是能够执行的呀! 请大家帮我找找原因呀!谢谢!:) |
2.Re:求教:一个多线程执行过程的疑问,关于sleep()方法的相关。 [Re: drxjava] | Copy to clipboard |
Posted by: archonLing Posted on: 2004-10-27 11:17 There is nothing wrong with the code. You are looking at the textbook example of race condition in Threading. You can't gurantee the output since Cosumer & Producer are competing for resource. Move the try{Thread.sleep(1);}catch(Exception e){} block out of the if..else block. Then, try it. You will be surprised. It is basically the timing issue. |
3.Re:求教:一个多线程执行过程的疑问,关于sleep()方法的相关。 [Re: drxjava] | Copy to clipboard |
Posted by: drxjava Posted on: 2004-10-27 19:29 I known it ! Thank you very much! Can you speak Chinese? I think that you use Chinese more than well. |
4.Re:求教:一个多线程执行过程的疑问,关于sleep()方法的相关。 [Re: drxjava] | Copy to clipboard |
Posted by: xxg0621 Posted on: 2004-11-13 17:29 程序中的所有代码都执行了,关键是从第二次开始每次执行到q.sex="女";再执行q.name="张三",接着producer线程sleep,consumer线程执行,结果就如你所说了 |
5.Re:求教:一个多线程执行过程的疑问,关于sleep()方法的相关。 [Re: drxjava] | Copy to clipboard |
Posted by: roc8633284 Posted on: 2004-11-15 20:22 我想: 执行到打印语句时,该线程独占CUP,不停的执行,以至于看不到别的情况。 我只是在打印语句前加一个 Thread.sleep(1000) 语句,让其暂停执行。 可以看到不同的结果。 我的个人之见。 |
6.Re:求教:一个多线程执行过程的疑问,关于sleep()方法的相关。 [Re: drxjava] | Copy to clipboard |
Posted by: roc8633284 Posted on: 2004-11-15 20:43 补充:为了进一步验证我所猜想的,我降低了打印语句的优先级,结果打印的结果就如程序所预料的了。 class Consumer implements Runnable{ } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |