2008-12-16

Debugging Deadlocks - Print All Stack Traces

http://www.symphonious.net/2008/11/24/debugging-deadlocks-print-all-stack-traces/ 如何處理 Deadlock ,雖然最近沒在寫 thread 的程式,不過留著記錄,說不定哪天會用到。
private static void printAllStackTraces() {
    Map liveThreads = Thread.getAllStackTraces();
    for (Iterator i = liveThreads.keySet().iterator(); i.hasNext(); ) {
      Thread key = (Thread)i.next();
      System.err.println("Thread " + key.getName());
        StackTraceElement[] trace = (StackTraceElement[])liveThreads.get(key);
        for (int j = 0; j < trace.length; j++) {
            System.err.println("\tat " + trace[j]);
        }
    }
}

其內容是寫說用上面這 method 去印出 thread 中的相關資訊,以便發現是哪個 thread 造成的 lock。

沒有留言: