欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

idea中断点类型之All和Thread的区别介绍,

来源: javaer 分享于  点击 21985 次 点评:285

idea中断点类型之All和Thread的区别介绍,


All模式

  •  所有的线程都要在当前位置被阻塞,谁先来就先阻塞谁,发生阻塞时其他的线程当前时刻执行到哪里就在哪里进行原地等待。
  • 如果此时按下一步F6,那所有的线程都通过阻塞代码如果此时按恢复程序运行F8,那么当前线程通过阻塞代码,等待下一个线程的到来,也是谁先来阻塞谁,发生阻塞时其他的线程当前时刻执行到哪里就在哪里进行原地等待。
public class ThreadAndAllBreakApplication {

    public static void main(String[] args) {
        ThreadTest thread1 = new ThreadTest();
        thread1.setName("线程A");
        thread1.start();
        ThreadTest thread2 = new ThreadTest();
        thread2.setName("线程B");
        thread2.start();
        ThreadTest thread3 = new ThreadTest();
        thread3.setName("线程C");
        thread3.start();
    }
}
class ThreadTest extends Thread {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + ": 1");
        try {
            long millis = RandomUtil.randomLong(100, 500);
            System.out.println(Thread.currentThread().getName() + "睡眠: " + millis);
            Thread.sleep(millis);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + ": 2");
        System.out.println(Thread.currentThread().getName() + ": 3");
        System.out.println(Thread.currentThread().getName() + ": 设置断点的前一行代码"); // 当前行设置断点
        System.out.println(Thread.currentThread().getName() + ": 4");
        System.out.println(Thread.currentThread().getName() + ": end");

线程A: 1
线程C: 1
线程B: 1
线程C睡眠: 283
线程A睡眠: 340
线程B睡眠: 127
线程B: 2
线程B: 3
线程B: 设置断点的前一行代码 // B来到了这里,此时其他线程A、B在原地等待,即A、B都在睡眠。
线程A: 2 // A之前执行到睡眠,现在执行2
线程A: 3
线程A: 设置断点的前一行代码 // A来到了这里,此时其他线程B、C在原地等待
线程C: 2 // c之前执行到睡眠,现在执行2
线程C: 3
线程A: 4
线程B: 4
线程A: end
线程C: 设置断点的前一行代码 // C来到了这里,如果不放行断点,B一直也不会输出end,会在原地等待(这里证明了当某个线程被All断点阻塞后,其他线程会在原地等待)
线程B: end
线程C: 4
线程C: end

Thread模式

所有的线程都会运行到断点处然后阻塞

  • 如果此时按下一步F6,那当前的线程都通过阻塞代码,其他线程不动。
  • 如果此时按恢复程序运行F8,那么当前线程通过阻塞代码,并自动切换到下一个阻塞线程进行调试。

在这里插入图片描述

到此这篇关于idea中断点类型:All和Thread的区别的文章就介绍到这了,更多相关idea 断点All和Thread内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

您可能感兴趣的文章:
  • IDEA 的基本介绍使用及断点调试技巧
  • IDEA调试技巧条件断点实现步骤详解
  • 使用IDEA异常断点来定位java.lang.ArrayStoreException的问题
相关栏目:

用户点评