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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java经典面试题之NIO多路复用

    Java经典面试题之NIO多路复用

    JAVA NIO 的多路复用是面试中经常被问的问题,今天我们彻底搞明白究竟是怎么回事,文中的示例代码讲解详细,希望对大家学习Java有所帮助
    2023-06-06
  • Spring Bean作用域与生命周期深入讲解

    Spring Bean作用域与生命周期深入讲解

    这篇文章主要介绍了浅谈Spring中Bean的作用域,生命周期和注解,从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。本文将通过示例为大家详细讲讲,感兴趣的可以学习一下
    2022-07-07
  • java中的executeQuery()方法使用

    java中的executeQuery()方法使用

    这篇文章主要介绍了java中的executeQuery()方法使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Mac中IntelliJ IDEA 2019.1注册过程分享

    Mac中IntelliJ IDEA 2019.1注册过程分享

    这篇文章主要介绍了Mac中IntelliJ IDEA 2019.1注册过程,本文给大家分享到脚本之家平台供大家学习,需要的朋友可以参考下
    2020-02-02
  • Spring一步到位精通拦截器

    Spring一步到位精通拦截器

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。本文将详细讲讲SpringMVC中拦截器的概念及入门案例,感兴趣的可以尝试一下
    2023-01-01
  • idea如何关闭右侧类显示方法

    idea如何关闭右侧类显示方法

    这篇文章主要介绍了idea如何关闭右侧类显示方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • java Date装成英文String后,无法再转回Date的解决方案

    java Date装成英文String后,无法再转回Date的解决方案

    本文介绍了java Date装成英文String后,无法再转回Date的解决方案。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Java利用ip2region实现获取IP地址详情

    Java利用ip2region实现获取IP地址详情

    ip2region是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。本文将利用ip2region实现获取IP地址详情,感兴趣的可以了解一下
    2022-07-07
  • SpringBoot中的Future接口详解

    SpringBoot中的Future接口详解

    这篇文章主要介绍了SpringBoot中的Future接口详解,在异步编程中,我们通常需要处理一些耗时的操作,一种常见的做法是使用 Future 接口来代表一个异步操作的结果,需要的朋友可以参考下
    2023-07-07
  • Java中的Null到底是什么

    Java中的Null到底是什么

    null是没有地址,""是有地址但是里面的内容是空的,好比做饭 null说明连锅都没有 而""则是有锅没米,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们来详细学习一下它吧
    2019-06-06

最新评论