Как вы можете визуально представить, какие потоки блокируют какие объекты в Java во время отладки? - PullRequest
3 голосов
/ 24 сентября 2010

Используя следующий пример ожидания / уведомления потока учебника, есть ли инструмент (плагин Eclipse?), Который отслеживает , какой поток блокирует , какой объект при прохождении и отладке?Инструмент, который каким-то образом визуально отображает соединения, был бы идеальным, если это возможно.

public class ThreadA {
    public static void main(String[] args) {
        ThreadB b = new ThreadB();
        b.start();
        synchronized (b) {      
            try {
                System.out.println("Waiting for b to complete...");
                b.wait();
            } catch (InterruptedException e) {
            }
            System.out.println("Total is: " + b.total);
        }
    }
}

class ThreadB extends Thread {
    int total;
    public void run() {
        synchronized (this) {
            for (int i = 0; i < 100; i++) {
                System.out.println(i);
                total += i;
            }
            notify();
        }
    }
}

1 Ответ

5 голосов
/ 25 сентября 2010

Eclipse уже поддерживает это. В стеке окна отладки, где находится синхронизированный, есть символ. Если вы включите «Показать мониторы», то вы также можете увидеть объект, на котором находятся блокировки. Вы можете установить его в настройках представления отладки «Java | Показать мониторы».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...