默认情况下,在调试多线程程序时,当遇到断点时(breakpoint),当前线程暂停,而其它线程继续运行,有些情况下,这是我们不想要看到的。比如下面的例子:
除第21个线程以外,其余都是Running状态。
修改:
Window->Preferences->Java->Debug:
在红色区域内,将默认的Suspend Thread 改为 Suspend VM
再调试多线程程序:
可以看到所有线程都Suspend了。
这应该是java中多线程的安全问题吧,CPU处理切换时间片的速率是非常快的,当线程1判断完之后还没来得及输出,时间片就切换到线程2上了,
然后又进行了一次判断结果还是大于0,但是还没等到线程2输出就又回到了线程1,接着执行
输出语句,比如输出10,输出完之后又一次回到线程2上进行第二次输出,输出的结果和线程1
一样(10)。我觉得应该是临时阻塞问题。 希望能够采纳.