对IDEA中断点Suspend 属性理解

文章讨论了在IDEA中不同类型的线程断点(ALL和Thread)如何影响多线程程序的暂停和调试。当ALL类型的断点被触发时,所有线程都会暂停;而Thread类型只暂停特定线程。同一时间只有一个ALL类型断点生效,其他线程遇到的断点会被忽略,Thread类型断点可以同时独立作用于多个线程。
摘要由CSDN通过智能技术生成

suspend的类型分为

1、ALL:有线程进入该断点时,暂停所有线程

2、Thread:有线程进入该断点时,只暂停该线程

讨论下不同线程在同一时间段都遇到断点时,idea的处理方法。假如在执行时间上,thread1会先进入断点1,Thread2后进入了断点2:

断点1暂停类型为all,断点2暂停类型为all

  • 断点1先遇到,thread1执行被暂停。由于断点1暂停类型为ALL,所以thread2的执行也同时被暂停,且无法达到断点2
  • 按F8,对thread1进行逐步调试,在thread1在恢复执行时,其他线程也开始恢复执行。如果在此期间,thread2会走入到断 点2,此时断点2并不会生效,会被忽略
  • 当thread1的一行代码执行完再次暂停时,thread2也同步被暂停执行

断点1暂停类型为all,断点2暂停类型为thread

  • 效果同(1)

断点1暂停类型为thread,断点2暂停类型为all

  • thread1与thread2都会进入断点,俩个线程的逐步诊断互不影响
  • 断点2还是会暂停其他线程

断点1暂停类型为thread,断点2暂停类型为thread

  • thread1与thread2都会进入断点,俩个线程的逐步诊断互不影响
  • 只有这俩个线程会被暂停,其他线程均保持执行

总结:

1、同时只会有一个all类型的断点生效,且在这个断点结束前,其它线程遇到的任何断点均不生效

2、all类型断点和thread类型断点可同时生效(只能在先遇到thread类型断点,再遇到all类型断点),且各自保持独立诊断

3、thread类型断点可同时生效,不论先后,且相互独立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值