前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IDEA多线程调试

IDEA多线程调试

原创
作者头像
诺浅
修改2020-08-19 14:40:49
7120
修改2020-08-19 14:40:49
举报
文章被收录于专栏:工具使用工具使用

程序

假设有如下一个程序

代码语言:txt
复制
public class MyRunnable implements Runnable {
    @Override
    public void run() {
        Thread currentThread = Thread.currentThread();
        System.out.println(currentThread.getName() + "-------------进入");

        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            System.out.println(currentThread.getName() + "-------------离开");
        }
    }
}

我们启动三条线程

代码语言:txt
复制
public class MyTest {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread1 = new Thread(myRunnable, "线程1");
        Thread thread2 = new Thread(myRunnable, "线程2");
        Thread thread3 = new Thread(myRunnable, "线程3");

        thread1.start();
        thread2.start();
        thread3.start();
    }
}

调试问题重现

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

可以看到调试的时候会在多线程之间乱跳,很不利于问题的排查。而且似乎线程的第一个断点没有走。如何设置断点每个线程都会走呢?

设置断点每个线程都会走

右键断点,点选Thread

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

设置只调试一条线程

右键断点,点选Thread,同时加上currentThread.getName().equals("线程1")条件。当然这个其实是有一定的问题的,因为项目里面用的线程一般是线程池,我们也很少去指定线程的名称,所以这个方法有一定的缺陷,有其他好的办法欢迎评论区指出。

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

参考:https://blog.csdn.net/nextyu/article/details/79039566

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 程序
  • 调试问题重现
  • 设置断点每个线程都会走
  • 设置只调试一条线程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档