在 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执行即可。