2013-09-17 4 views
8

Как переключаться между потоками приостановленной программы?Переключение между потоками в Intellij Idea

или любой учебник по многопоточной отладке с Intellij Idea, описывающий основные функции - приостанавливать, возобновлять, переключаться между потоками.

очень хорошие учебные пособия/пошаговые руководства для Netbeans: например. https://netbeans.org/kb/docs/java/debug-multithreaded.html

ответ

14

Хитрость заключается в том, чтобы установить точку останова приостановить политику на - Thread.

breakpoint properties - suspend policy

После этого потоки будут поражать точки останова и блок, в настоящее время активный поток может быть включен, чтобы проверить условия гонки/тупики.

switching between threads

Следующий фрагмент кода для создания тупиковой:

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"); 
    } 
} 
5

Amit,

Вы можете быть заинтересованы в альтернативных нитках зрения стека вызовов, с поддержкой, нажав на «Восстановить темы просмотра» Кнопка: enter image description here

Немного документации вокруг этого: Debug Tool Window - Threads

Кроме того, эти вопросы могут быть полезны:

  1. IntelliJ Thread Debug
  2. IntelliJ - pause a thread while debugging
+0

Спасибо @AJ. разобрался. –

Смежные вопросы