IntelliJ IDEA 之 多线程调试重点参数
写在前面
暑假期间,正值中午,困意十足,正当精神游离之际。有同事在工作群里喊,测试环境某应用频繁出现响应超时。我立刻缓过神来,八九不离十,这个彩蛋是我埋的。
题外话
正常情况下,我们通过 Idea 创建的断点,都是 Suspend All,那么 Suspend All 代表的什么意思呢?因为今天的内容较少,这里我必须卖个关子,这样会显得内容多一些。
主要内容
+ 演示环境
+ 重现 “题外话” 中的场景
+ Breakpoint Suspend 参数介绍
+ 附件和注意
演示环境 ,介绍本次远程调试所依赖的软件环境。
+ Apache Tomcat :7.0.55
+ IntelliJ IDEA :2018.2.1 (Ultimate Edition)
+ Windows 10 家庭中文版
重现 “题外话” 中的场景
精神充沛时,我在远程调试(IntelliJ IDEA 之 远程调试篇)测试机的代码,并在 “Hello World” 类添加了行断点(IntelliJ IDEA 之 断点类型(Breakpoint)),然后就开始游离了。从此之后该测试应用就永远停止在了我的断点处,同时也无法提供其他的请求了。
Breakpoint Suspend 参数介绍,在创建断点时有一个重要参数:Suspend
Suspend:未勾选,程序运行到断点处并不会阻塞,而会继续执行后面的逻辑。
Suspend:勾选,代表程序运行到断点处会阻塞。
+ All:勾选,代表断点会阻塞所有线程。
+ Thread:勾选,代表断点只会阻塞当前线程。
[Suspend勾选,All勾选] 是默认值,所以才会出现 “Stop The World” 的可怕情况。所以说,在多线程调试时,若你希望阻塞程序,最好选择 Thread 当前线程阻塞策略,这样就不会影响到其他线程的工作。
No Stop The World
附件和注意
附件和注意,包括上述 Gif 图片中的配置信息和测试代码片段,若有任何未提及到的内容,请联系我。
注意:
本文的最后一张图片显示了选择 Thread 阻塞策略时的场景,因为 Idea 默认的阻塞策略是 All ,所以在远程调试的时候要注意,防止影响其他同事。当然若是在本地测试的话,影响就不会那么大了。
微信公众号
文章内容大多数都是从我的公众号搬过来的,内容可能没有公众号更新的及时,下面是我的公号,欢迎来访。