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下的值注入(推荐)

    SpringBoot下的值注入(推荐)

    这篇文章主要介绍了SpringBoot下的值注入(推荐)的相关资料,需要的朋友可以参考下
    2017-05-05
  • Spring Security获取用户认证信息的实现流程

    Spring Security获取用户认证信息的实现流程

    Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI和AOP功能,为应用系统提供声明式的安全访问控制功能
    2022-12-12
  • Redis在springboot中的使用教程

    Redis在springboot中的使用教程

    这篇文章主要介绍了Redis在springboot中的使用教程,本文实例代码相结合的形式给大家介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • Spring Boot使用LocalDateTime、LocalDate作为入参的方案详解

    Spring Boot使用LocalDateTime、LocalDate作为入参的方案详解

    这篇文章主要介绍了Spring Boot使用LocalDateTime、LocalDate作为入参,本文基于Springboot2.0测试,如果无法生效可能是spring版本较低导致的,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Java面试突击之Bean作用域详解

    Java面试突击之Bean作用域详解

    Spring 框架作为一个管理 Bean 的 IoC 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看
    2022-08-08
  • java求最大公约数与最小公倍数的方法示例

    java求最大公约数与最小公倍数的方法示例

    这篇文章主要介绍了java求最大公约数与最小公倍数的方法,涉及java数值运算的相关操作技巧,并附带分析了eclipse环境下设置运行输入参数的相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • 关于Java集合框架面试题(含答案)下

    关于Java集合框架面试题(含答案)下

    Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。
    2015-12-12
  • Java正则表达式基础语法详解

    Java正则表达式基础语法详解

    这篇文章主要介绍了Java正则表达式语法,包括常用正则表达式、匹配验证-验证Email是否正确以及字符串中查询字符或者字符串,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • JavaWeb实现上传文件功能

    JavaWeb实现上传文件功能

    这篇文章主要为大家详细介绍了JavaWeb实现上传文件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 一文讲通Java为什么不支持多继承原理

    一文讲通Java为什么不支持多继承原理

    这篇文章主要为大家介绍了java为什么不支持多继承原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论