1 22 23 package org.aspectj.debugger.base; 24 25 import com.sun.jdi.*; 26 import java.util.*; 27 28 36 37 public class ThreadLockInformation { 38 39 private ThreadReference threadRef; 40 41 public ThreadLockInformation(ThreadReference threadRef) { 42 this.threadRef = threadRef; 43 } 44 45 public List getOwnedMonitors() throws DebuggerException { 46 try { 47 return threadRef.ownedMonitors(); 48 } catch (UnsupportedOperationException uoe) { 49 throw new DebuggerException(uoe); 50 } catch (IncompatibleThreadStateException itse) { 51 throw new DebuggerException(itse); 52 } 53 } 54 55 public List getWaitingThreads() throws DebuggerException { 56 try { 57 return threadRef.waitingThreads(); 58 } catch (UnsupportedOperationException uoe) { 59 throw new DebuggerException(uoe); 60 } catch (IncompatibleThreadStateException itse) { 61 throw new DebuggerException(itse); 62 } 63 } 64 65 public String toString() { 66 try { 67 String str = "Thread: " + threadRef + Consts.newline; 68 str += "Owned monitors: " + getOwnedMonitors() + Consts.newline; 69 str += "Waiting threads: " + getWaitingThreads(); 70 return str; 71 } catch (DebuggerException e) { 72 } 73 return "Thread thread has resumed."; 74 } 75 } 76 | Popular Tags |