本帖最后由 谢述华 于 2012-5-25 11:43 编辑
一、先回答你的问题:
①this.wait();使线程处于等待状态,所以两个线程全部在等待了。
②setFlag(false);在这里没有意义,因为它根本不可能被调用。
二、再分析下你的程序:
①前面的打印全部是main线程的内容。屏蔽t1和t2后,可见打印效果。- /* t1.interrupt();
- t2.interrupt();*/
复制代码 t1.t2还处于等待状态,所以需要结束他们。
②所以有了前面的interrupt()
然而处于等待状态的线程不能执行interrupt命令,正如使用wait方法时要处理InterruptedException异常。
故 打印的第二部分为异常处理情况(位于打印50次①以后)。
③setFlag没有被执行,所以无效的。如果被执行可以结束while循环,从而自然结束本线程。
具体还可以参看java.lang.Thread帮助文档中interrupt方法和java.lang.Object帮助文档中wait方法。希望能够帮到你~~
|
|