switching between threads in Intellij Idea

后端 未结 2 1415
谎友^
谎友^ 2020-12-16 20:44

How to switch between threads of a suspended program?

or Any tutorial on multi-threaded debugging with Intellij Idea describing basic features - suspend, resume, sw

相关标签:
2条回答
  • 2020-12-16 21:22

    Amit,

    You may be interested in an alternative threads view of the call stack, enabled by clicking the 'Restore threads view' button: enter image description here

    A bit of documentation around that : Debug Tool Window - Threads

    Also, these questions might be useful :

    1. IntelliJ Thread Debug
    2. IntelliJ - pause a thread while debugging
    0 讨论(0)
  • 2020-12-16 21:31

    Trick is to set breakpoint suspend policy to - Thread. View breakpoint properties (right-click on breakpoint)

    breakpoint properties - suspend policy

    Once done threads will hit breakpoint and block, now active thread can be switched to check race conditions/deadlocks.

    switching between threads

    Following code snippet for creating deadlock:

    public static void main(String args[]) {
        Thread thread1 = new Thread(null, new MyThread(obj1, obj2), "Thread-1");
        Thread thread2 = new Thread(null, new MyThread(obj2, obj1), "Thread-2");
        thread1.start();
        thread2.start();
    }
    class MyThread implements Runnable {
        private Object obj1;
        private Object obj2;
    
        MyThread(Object obj1, Object obj2) {
            this.obj1 = obj1;
            this.obj2 = obj2;
        }
    
        @Override
        public void run() {
            System.out.println("Acquiring locks");
            synchronized (obj1){
                System.out.println("Acquired 1st lock");
                synchronized (obj2){
                    System.out.println("Acquired 2nd lock");
                }
                System.out.println("Released 2nd lock");
            }
            System.out.println("Released 1st lock");
        }
    }
    
    0 讨论(0)
提交回复
热议问题