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

 更新时间:2022年03月17日 16:38:06   作者:我叫985  
使用all模式对于程序中含有多个线程来说,会将多个线程都阻塞在断点,此时所有的线程都执行到此处,在最后一个线程执行到此处是会发生暂停,在这之前的线程会继续执行到任意位置,本文给大家详细介绍下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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解SpringBoot使用RedisTemplate操作Redis的5种数据类型

    详解SpringBoot使用RedisTemplate操作Redis的5种数据类型

    本文主要介绍了SpringBoot使用RedisTemplate操作Redis的5种数据类型,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java中Cron表达式的生成解析及计算的工具类完整代码

    Java中Cron表达式的生成解析及计算的工具类完整代码

    这篇文章主要给大家介绍了关于Java中Cron表达式的生成解析及计算工具类的相关资料,Cron表达式是一个字符串,字符串空格分割,每一个域代表一个含义,一个cron表达式有至少6个,需要的朋友可以参考下
    2023-12-12
  • JavaWeb中上传和下载文件实例代码

    JavaWeb中上传和下载文件实例代码

    这篇文章主要介绍了JavaWeb中上传和下载文件实例代码,需要的朋友可以参考下
    2017-06-06
  • scala+redis实现分布式锁的示例代码

    scala+redis实现分布式锁的示例代码

    这篇文章主要介绍了scala+redis实现分布式锁的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Java设计模式之抽象工厂模式详解

    Java设计模式之抽象工厂模式详解

    这篇文章主要介绍了Java设计模式之抽象工厂模式详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • 使用Spring Boot AOP处理方法的入参和返回值

    使用Spring Boot AOP处理方法的入参和返回值

    这篇文章主要介绍了使用Spring Boot AOP处理方法的入参和返回值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring,hibernate,struts经典面试笔试题(含答案)

    Spring,hibernate,struts经典面试笔试题(含答案)

    这篇文章主要介绍了Spring,hibernate,struts经典面试笔试题极其参考含答案,涉及SSH基本概念,原理与使用技巧,需要的朋友可以参考下
    2016-03-03
  • Java实现对称加密DES和AES的示例代码

    Java实现对称加密DES和AES的示例代码

    这篇文章主要介绍了如何使用Java实现采用对称密码算法的应用软件,所用算法包括DES算法和AES算法,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-04-04
  • Spring调度框架EnableScheduling&Scheduled源码解析

    Spring调度框架EnableScheduling&Scheduled源码解析

    这篇文章主要介绍了Spring调度框架EnableScheduling&Scheduled源码解析,@EnableScheduling&Scheduled定时调度框架,本着不仅知其然还要知其所以然的指导思想,下面对该调度框架进行源码解析,以便更好的理解其执行过程,需要的朋友可以参考下
    2024-01-01
  • Java实现斗地主案例

    Java实现斗地主案例

    这篇文章主要为大家详细介绍了Java实现斗地主案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04

最新评论