List of usage examples for java.lang.management ThreadInfo getThreadState
public Thread.State getThreadState()
From source file:org.apache.metron.common.utils.ErrorUtils.java
public static String generateThreadDump() { final StringBuilder dump = new StringBuilder(); final ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); final ThreadInfo[] threadInfos = threadMXBean.getThreadInfo(threadMXBean.getAllThreadIds(), 100); for (ThreadInfo threadInfo : threadInfos) { dump.append('"'); dump.append(threadInfo.getThreadName()); dump.append("\" "); final Thread.State state = threadInfo.getThreadState(); dump.append("\n java.lang.Thread.State: "); dump.append(state);/*from www. j a va2 s .c o m*/ final StackTraceElement[] stackTraceElements = threadInfo.getStackTrace(); for (final StackTraceElement stackTraceElement : stackTraceElements) { dump.append("\n at "); dump.append(stackTraceElement); } dump.append("\n\n"); } return dump.toString(); }
From source file:Main.java
/** * Turns the given {@link ThreadInfo} into a {@link String}. */// w w w .ja v a2 s . co m public static String toString(ThreadInfo[] threads) { StringBuilder buffer = new StringBuilder(); for (ThreadInfo info : threads) { buffer.append("\"").append(info.getThreadName()).append("\" (id=").append(info.getThreadId()) .append(")"); buffer.append(" ").append(info.getThreadState()).append(" on ").append(info.getLockName()) .append(" owned by "); buffer.append("\"").append(info.getLockOwnerName()).append("\" (id=").append(info.getLockOwnerId()) .append(")"); if (info.isSuspended()) { buffer.append(" (suspended)"); } if (info.isInNative()) { buffer.append(" (is native)"); } buffer.append("\n"); StackTraceElement[] trace = info.getStackTrace(); for (int i = 0; i < trace.length; i++) { buffer.append("\tat ").append(trace[i]).append("\n"); if (i == 0) { buffer.append(getLockState(info)); } buffer.append(getLockedMonitors(info, i)); } buffer.append("\n"); } return buffer.toString(); }
From source file:com.microsoft.sqlserver.jdbc.connection.PoolingTest.java
/** * count number of mssql-jdbc-TimeoutTimer threads * /*from w w w . j a v a2 s . c o m*/ * @return */ private static int countTimeoutThreads() { int count = 0; String threadName = "mssql-jdbc-TimeoutTimer"; ThreadInfo[] tinfos = ManagementFactory.getThreadMXBean() .getThreadInfo(ManagementFactory.getThreadMXBean().getAllThreadIds(), 0); for (ThreadInfo ti : tinfos) { if ((ti.getThreadName().startsWith(threadName)) && (ti.getThreadState().equals(java.lang.Thread.State.TIMED_WAITING))) { count++; } } return count; }
From source file:Main.java
public static String takeDumpJSON(ThreadMXBean threadMXBean) throws IOException { ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(true, true); List<Map<String, Object>> threads = new ArrayList<>(); for (ThreadInfo thread : threadInfos) { Map<String, Object> threadMap = new HashMap<>(); threadMap.put("name", thread.getThreadName()); threadMap.put("id", thread.getThreadId()); threadMap.put("state", thread.getThreadState().name()); List<String> stacktrace = new ArrayList<>(); for (StackTraceElement element : thread.getStackTrace()) { stacktrace.add(element.toString()); }/*from w w w .ja va2 s . c om*/ threadMap.put("stack", stacktrace); if (thread.getLockName() != null) { threadMap.put("lock_name", thread.getLockName()); } if (thread.getLockOwnerId() != -1) { threadMap.put("lock_owner_id", thread.getLockOwnerId()); } if (thread.getBlockedTime() > 0) { threadMap.put("blocked_time", thread.getBlockedTime()); } if (thread.getBlockedCount() > 0) { threadMap.put("blocked_count", thread.getBlockedCount()); } if (thread.getLockedMonitors().length > 0) { threadMap.put("locked_monitors", thread.getLockedMonitors()); } if (thread.getLockedSynchronizers().length > 0) { threadMap.put("locked_synchronizers", thread.getLockedSynchronizers()); } threads.add(threadMap); } ObjectMapper om = new ObjectMapper(); ObjectNode json = om.createObjectNode(); json.put("date", new Date().toString()); json.putPOJO("threads", threads); long[] deadlockedThreads = threadMXBean.findDeadlockedThreads(); long[] monitorDeadlockedThreads = threadMXBean.findMonitorDeadlockedThreads(); if (deadlockedThreads != null && deadlockedThreads.length > 0) { json.putPOJO("deadlocked_thread_ids", deadlockedThreads); } if (monitorDeadlockedThreads != null && monitorDeadlockedThreads.length > 0) { json.putPOJO("monitor_deadlocked_thread_ids", monitorDeadlockedThreads); } om.enable(SerializationFeature.INDENT_OUTPUT); return om.writerWithDefaultPrettyPrinter().writeValueAsString(json); }
From source file:Main.java
private static void threadHeader(StringBuilder sb, ThreadInfo threadInfo) { final String threadName = threadInfo.getThreadName(); sb.append("\""); sb.append(threadName);//from ww w. jav a 2s. c o m sb.append("\" "); sb.append("Id="); sb.append(threadInfo.getThreadId()); try { final Thread.State threadState = threadInfo.getThreadState(); final String lockName = threadInfo.getLockName(); final String lockOwnerName = threadInfo.getLockOwnerName(); final Long lockOwnerId = threadInfo.getLockOwnerId(); final Boolean isSuspended = threadInfo.isSuspended(); final Boolean isInNative = threadInfo.isInNative(); sb.append(" "); sb.append(threadState); if (lockName != null) { sb.append(" on "); sb.append(lockName); } if (lockOwnerName != null) { sb.append(" owned by \""); sb.append(lockOwnerName); sb.append("\" Id="); sb.append(lockOwnerId); } if (isSuspended) { sb.append(" (suspended)"); } if (isInNative) { sb.append(" (in native)"); } } catch (final Exception e) { sb.append(" ( Got exception : ").append(e.getMessage()).append(" :"); } sb.append('\n'); }
From source file:org.apache.tajo.master.querymaster.QueryMasterRunner.java
public static void printThreadInfo(PrintWriter stream, String title) { ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); final int STACK_DEPTH = 60; boolean contention = threadBean.isThreadContentionMonitoringEnabled(); long[] threadIds = threadBean.getAllThreadIds(); stream.println("Process Thread Dump: " + title); stream.println(threadIds.length + " active threads"); for (long tid : threadIds) { ThreadInfo info = threadBean.getThreadInfo(tid, STACK_DEPTH); if (info == null) { stream.println(" Inactive"); continue; }//ww w . ja va 2s . co m stream.println("Thread " + getTaskName(info.getThreadId(), info.getThreadName()) + ":"); Thread.State state = info.getThreadState(); stream.println(" State: " + state); stream.println(" Blocked count: " + info.getBlockedCount()); stream.println(" Waited count: " + info.getWaitedCount()); if (contention) { stream.println(" Blocked time: " + info.getBlockedTime()); stream.println(" Waited time: " + info.getWaitedTime()); } if (state == Thread.State.WAITING) { stream.println(" Waiting on " + info.getLockName()); } else if (state == Thread.State.BLOCKED) { stream.println(" Blocked on " + info.getLockName()); stream.println(" Blocked by " + getTaskName(info.getLockOwnerId(), info.getLockOwnerName())); } stream.println(" Stack:"); for (StackTraceElement frame : info.getStackTrace()) { stream.println(" " + frame.toString()); } } stream.flush(); }
From source file:Main.java
public static void printStack(ThreadInfo info, final StringBuilder sb, final StackTraceElement[] stack) { int i = 0;/* w w w.jav a 2 s . co m*/ for (final StackTraceElement element : stack) { sb.append("\tat ").append(element.toString()); sb.append('\n'); if (i == 0 && info.getLockInfo() != null) { final Thread.State ts = info.getThreadState(); switch (ts) { case BLOCKED: sb.append("\t- blocked on "); formatLock(sb, info.getLockInfo()); sb.append('\n'); break; case WAITING: sb.append("\t- waiting on "); formatLock(sb, info.getLockInfo()); sb.append('\n'); break; case TIMED_WAITING: sb.append("\t- waiting on "); formatLock(sb, info.getLockInfo()); sb.append('\n'); break; default: } } for (final MonitorInfo mi : info.getLockedMonitors()) { if (mi.getLockedStackDepth() == i) { sb.append("\t- locked "); formatLock(sb, mi); sb.append('\n'); } } ++i; } final LockInfo[] locks = info.getLockedSynchronizers(); if (locks.length > 0) { sb.append("\n\tNumber of locked synchronizers = ").append(locks.length).append('\n'); for (final LockInfo li : locks) { sb.append("\t- "); formatLock(sb, li); sb.append('\n'); } } }
From source file:ReflectionUtils.java
/** * Print all of the thread's information and stack traces. * /*from w ww . java2 s .c o m*/ * @param stream * the stream to * @param title * a string title for the stack trace */ public static void printThreadInfo(PrintWriter stream, String title) { final int STACK_DEPTH = 20; boolean contention = threadBean.isThreadContentionMonitoringEnabled(); long[] threadIds = threadBean.getAllThreadIds(); stream.println("Process Thread Dump: " + title); stream.println(threadIds.length + " active threads"); for (long tid : threadIds) { ThreadInfo info = threadBean.getThreadInfo(tid, STACK_DEPTH); if (info == null) { stream.println(" Inactive"); continue; } stream.println("Thread " + getTaskName(info.getThreadId(), info.getThreadName()) + ":"); Thread.State state = info.getThreadState(); stream.println(" State: " + state); stream.println(" Blocked count: " + info.getBlockedCount()); stream.println(" Waited count: " + info.getWaitedCount()); if (contention) { stream.println(" Blocked time: " + info.getBlockedTime()); stream.println(" Waited time: " + info.getWaitedTime()); } if (state == Thread.State.WAITING) { stream.println(" Waiting on " + info.getLockName()); } else if (state == Thread.State.BLOCKED) { stream.println(" Blocked on " + info.getLockName()); stream.println(" Blocked by " + getTaskName(info.getLockOwnerId(), info.getLockOwnerName())); } stream.println(" Stack:"); for (StackTraceElement frame : info.getStackTrace()) { stream.println(" " + frame.toString()); } } stream.flush(); }
From source file:org.apache.hadoop.hbase.util.ReflectionUtils.java
/** * Print all of the thread's information and stack traces. * * @param stream the stream to//from w w w . ja v a 2s . co m * @param title a string title for the stack trace */ private static void printThreadInfo(PrintStream stream, String title) { final int STACK_DEPTH = 20; boolean contention = threadBean.isThreadContentionMonitoringEnabled(); long[] threadIds = threadBean.getAllThreadIds(); stream.println("Process Thread Dump: " + title); stream.println(threadIds.length + " active threads"); for (long tid : threadIds) { ThreadInfo info = threadBean.getThreadInfo(tid, STACK_DEPTH); if (info == null) { stream.println(" Inactive"); continue; } stream.println("Thread " + getTaskName(info.getThreadId(), info.getThreadName()) + ":"); Thread.State state = info.getThreadState(); stream.println(" State: " + state); stream.println(" Blocked count: " + info.getBlockedCount()); stream.println(" Waited count: " + info.getWaitedCount()); if (contention) { stream.println(" Blocked time: " + info.getBlockedTime()); stream.println(" Waited time: " + info.getWaitedTime()); } if (state == Thread.State.WAITING) { stream.println(" Waiting on " + info.getLockName()); } else if (state == Thread.State.BLOCKED) { stream.println(" Blocked on " + info.getLockName()); stream.println(" Blocked by " + getTaskName(info.getLockOwnerId(), info.getLockOwnerName())); } stream.println(" Stack:"); for (StackTraceElement frame : info.getStackTrace()) { stream.println(" " + frame.toString()); } } stream.flush(); }
From source file:EventDispatchThreadHangMonitor.java
private static void checkForDeadlock() { ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); long[] threadIds = threadBean.findMonitorDeadlockedThreads(); if (threadIds == null) { return;// ww w . j a v a 2s . co m } Log.warn("deadlock detected involving the following threads:"); ThreadInfo[] threadInfos = threadBean.getThreadInfo(threadIds, Integer.MAX_VALUE); for (ThreadInfo info : threadInfos) { Log.warn("Thread #" + info.getThreadId() + " " + info.getThreadName() + " (" + info.getThreadState() + ") waiting on " + info.getLockName() + " held by " + info.getLockOwnerName() + stackTraceToString(info.getStackTrace())); } }