欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2022-12-06 13:37:24|栏目:JAVA代码|点击:

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,那么当前线程通过阻塞代码,并自动切换到下一个阻塞线程进行调试。

在这里插入图片描述

上一篇:Spring定时任务中@PostConstruct被多次执行异常的分析与解决

栏    目:JAVA代码

下一篇:没有了

本文标题:idea中断点类型之All和Thread的区别介绍

本文地址:http://www.codeinn.net/misctech/220744.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有