Java多线程调试如何完成信息输出处理

Python018

Java多线程调试如何完成信息输出处理,第1张

默认情况下,在调试多线程程序时,当遇到断点时(breakpoint),当前线程暂停,而其它线程继续运行,有些情况下,这是我们不想要看到的。比如下面的例子:

除第21个线程以外,其余都是Running状态。

修改:

Window->Preferences->Java->Debug:

在红色区域内,将默认的Suspend Thread 改为 Suspend VM

再调试多线程程序:

可以看到所有线程都Suspend了。

这应该是java中多线程的安全问题吧,CPU处理切换时间片的速率是非常快的,

当线程1判断完之后还没来得及输出,时间片就切换到线程2上了,

然后又进行了一次判断结果还是大于0,但是还没等到线程2输出就又回到了线程1,接着执行

输出语句,比如输出10,输出完之后又一次回到线程2上进行第二次输出,输出的结果和线程1

一样(10)。我觉得应该是临时阻塞问题。 希望能够采纳.