IDEA 多线程debug干预线程执行顺序

有时候我们往往遇到这种问题:想在本地学习或者测试多线程代码,想人工干预线程执行顺序,可能使用Thread.sleep(),join()等方式,又或者我的代码在本地测试好好地,一到线上就可能出现各种问题,如果排查到是因为多线程引起的问题,那么我们怎么能在测试环境复现问题,模拟相同的执行顺序呢?这么时候IDEA自带的多线程debug可能能帮得到我们

贴上一段简单代码,启动三个线程,分别输出‘a’,‘b’,‘c’

public class TestDebug {
    public static void main(String[] args) {
        Thread t1 = new Thread(() ->
            System.out.println("a")
        );
        Thread t2 = new Thread(() ->
            System.out.println("b")
        );
        Thread t3 = new Thread(() ->
            System.out.println("c")
        );

        t1.start();
        t2.start();
        t3.start();
    }
}

输出结果每次不尽相同,什么顺序都有可能。现在的需求是依次输出 a b c
要怎么做呢?可以使用IDEA自带的多线程debug。
首先,把需要干预的地方打断点

image.png

然后在断点上右键,就可以把断点设置为线程模式啦


image.png

debug执行程序,然后就能看到被阻塞的各个线程,然后选择该线程,再操作下一步下一步即可。


image.png

你可能感兴趣的:(IDEA 多线程debug干预线程执行顺序)