一个没什么用的IntelliJ IDEA调试多线程的小知识
起因
今天在 SpringBoot
中写了一段这样的代码:
1 |
|
启动时在 run()
方法中打了断点,发现居然影响了整个 Spring
项目的启动,直接导致启动暂停。
猜测
按照常规理解,new Thread()
中应该并不会影响到整个项目的正常启动。
猜测是由于编辑器,也就是 IntelliJ IDEA
调试的配置问题。
尝试
尝试在断点处右键,设置断点中断条件时,发现了线程选项:
如图,在 Suspend
选项中,默认选中的为 All
,也就是只要有一个线程进入了 Debug
状态,其他所有的线程都会暂时中止。因此将选项修改为 Thread
即可。
可以查看官网教程:https://www.jetbrains.com/help/idea/using-breakpoints.html#breakpoint-properties
The following policies are available for the breakpoints that suspend program execution:
- All: all threads are suspended when any of the threads hits the breakpoint.
- Thread: only the thread which hits the breakpoint is suspended.
If you want a policy to be used as the default one, click the Make default button.