[黑壳博客转载]debug模式和run模式运行结果不同
debug模式和run模式运行结果不同
本文由黑壳博客创作
本文来源debug模式和run模式运行结果不同
一篇一笑
这或许就是肿了的原因
正文
前些天群里朋友问,为什么debug 和run模式运行结果会不一样
我在这先以一篇代码为例,
public class Test {private volatile int inc = 0;public void increase(){inc++;}public static void main(String[] args) {final Test test = new Test();for (int i = 0; i < 10; i++) {new Thread(){@Overridepublic void run() {test.increase();}}.start();}while (Thread.activeCount() > 1){Thread.yield();}System.out.println(test.inc);}
}
一两句话就能让你懂
如果代码不做干预,多线程的执行结果是不稳定的。
debug模式因为idea会不断的抓取内存快照,会在一定程度上影响线程的调度,从而导致结果和普通模式有较明显的区别。
如果想更加了解Java调试体系可以参考这个系列文章
http://www.ibm.com/developerworks/cn/java/j-lo-jpda1
文章简单介绍了 JPDA 的三个模块以及它们如何和其它层次交互
- JPDA 定义了一套如何开发调试工具的接口和规范。
- JPDA 由三个独立的模块 JVMTI、JDWP、JDI 组成。
- 调试者通过 JDI 发送接受调试命令。
- JDWP 定义调试者和被调试者交流数据的格式。
- JVMTI 可以控制当前虚拟机运行状态。
- 除了标准实现,JPDA 还有许多开源实现供使用。
- Java 调试工具的优点。
About
欢迎在评论写下你的程序员趣事~~
欢迎加入我们的小组织 ,大家都叫壳叔,期待你的到来。
欢迎关注公众号
这是我们的Group
黑壳家根据地 Q群:200408242
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
