Idea多线程调试

在 IntelliJ IDEA 中调试多线程应用程序可能会有些复杂,因为多个线程可能会同时运行和交互。不过,IDEA 提供了一些强大的工具来帮助你进行多线程调试。以下是一些关键步骤和技巧,帮助你有效地调试多线程应用程序:
创建一个示例多线程应用程序
首先,让我们创建一个简单的 Java 多线程应用程序作为示例:
在一些开发场景中,需要开启多线程调试模式,基于idea,代码如下

package com.lc.concurrency.multithreading;

/**
 * @author lc
 * @date 2024/6/12
 */
public class ThreadTest1 {

    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        Thread thread1 = new Thread(myThread, "Thread 1");
        Thread thread2 = new Thread(myThread, "Thread 2");
        Thread thread3 = new Thread(myThread, "Thread 3");
        thread1.start();
        thread2.start();
        thread3.start();
    }
}


class MyThread implements  Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+": is running");
    }

}

最重要的就是控制两个线程的执行顺序,我们要做的其实就是当另一个不处于调试状态的线程命中断点后,能先暂停,一直等到我去处理为止。经过一番折腾后发现,其实Idea提供了这个功能,在断点处右键
在IDEA中有一个设置,那就是当我们在断点处单击鼠标右键就会弹出一个设置对话框,当我们把其中的All 修改为 Thread之后,尝试重新执行debug代码,每一个线程都会进入到断点当中了。就实现了对多线程进行debug
使用 Debug 窗口
当应用程序在断点处暂停时,你将看到 IDEA 下方弹出 Debug 窗口。这个窗口提供了多个标签和信息:
Frames:显示当前线程的调用栈。
Variables:显示当前作用域内的变量。
Watches:允许你手动添加表达式以便监视其值。
Threads:显示所有活动线程。你可以选择不同的线程查看其状态和调用栈。
切换和管理线程
在 Debug 窗口的 Threads 标签中,你可以看到所有正在运行的线程。双击某个线程可以查看其调用栈和当前执行位置。你还可以右键点击线程来挂起或恢复它们。
操作步骤
1.在断点上【右键】选Thread。
在这里插入图片描述

2.开三个线程发送请求(可以从画面上,分别使用三个用户发请求)。
下图中Threads标签下thread1、thread2、thread3就是三个线程。
在这里插入图片描述

当前线程的名字
在这里插入图片描述

debugger最右侧小方块按钮点击
3.切换线程执行。
点击下来列表选择●的线程。线程1切换线程2
在这里插入图片描述

4.想执行哪个线程就点F9执行即可。
执行完一个线程,会自动切换到另一个线程,继续F9执行即可。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关推荐

  1. Qt线调用python并接收调用数据

    2024-06-13 16:00:02       27 阅读
  2. Linux线

    2024-06-13 16:00:02       54 阅读
  3. 线

    2024-06-13 16:00:02       44 阅读

最近更新

  1. linux:命令执行过程【图表】

    2024-06-13 16:00:02       0 阅读
  2. 系统架构设计师——网络设计

    2024-06-13 16:00:02       0 阅读
  3. SSL证书到期自动巡检脚本-推送钉钉告警

    2024-06-13 16:00:02       1 阅读
  4. 如何才能在Linux下编写驱动程序

    2024-06-13 16:00:02       1 阅读
  5. Tomcat打破双亲委派模型的方式

    2024-06-13 16:00:02       1 阅读
  6. C++惯用法: 通过std::decltype来SFINAE掉表达式

    2024-06-13 16:00:02       1 阅读
  7. HTTP 范围Range请求

    2024-06-13 16:00:02       1 阅读

热门阅读

  1. 僵尸进程与孤儿进程

    2024-06-13 16:00:02       5 阅读
  2. PyTorch -- 最常见损失函数 LOSS 的选择

    2024-06-13 16:00:02       9 阅读
  3. docker构建alpine镜像时,运行环境坑。

    2024-06-13 16:00:02       7 阅读
  4. 高考计算机专业 热门专业方向

    2024-06-13 16:00:02       6 阅读
  5. vue使用

    2024-06-13 16:00:02       6 阅读
  6. Flink 命令行提交、展示和取消作业

    2024-06-13 16:00:02       9 阅读
  7. 深入浅出: XML HttpRequest 入门指南

    2024-06-13 16:00:02       11 阅读
  8. Release和Debug的区别?Release有什么好处?【面试】

    2024-06-13 16:00:02       8 阅读
  9. QT与VS的区别?使用QT的好处?

    2024-06-13 16:00:02       11 阅读
  10. P3842 [TJOI2007] 线段

    2024-06-13 16:00:02       10 阅读
  11. 大数据平台之权限管理

    2024-06-13 16:00:02       7 阅读
  12. 【代码】数据类型之基本数据类型

    2024-06-13 16:00:02       9 阅读