本文整理汇总了Java中java.lang.management.MonitorInfo类的典型用法代码示例。如果您正苦于以下问题:Java MonitorInfo类的具体用法?Java MonitorInfo怎么用?Java MonitorInfo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MonitorInfo类属于java.lang.management包,在下文中一共展示了MonitorInfo类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private static StringBuilder printThreadInfo(ThreadInfo ti, StringBuilder sb) {
// print thread information
printThread(ti, sb);
// print stack trace with locks
StackTraceElement[] stacktrace = ti.getStackTrace();
MonitorInfo[] monitors = ti.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
sb.append("\t at " + ste.toString()).append("\n");
for (MonitorInfo mi : monitors) {
if (mi.getLockedStackDepth() == i) {
sb.append("\t - locked " + mi).append("\n");
}
}
}
sb.append("\n");
return sb;
}
示例2: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private void printThreadInfo(ThreadInfo ti, PrintStream out) {
printThread(ti, out);
// print stack trace with locks
StackTraceElement[] stacktrace = ti.getStackTrace();
MonitorInfo[] monitors = ti.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
out.println(INDENT + "at " + ste.toString()); // NOI18N
for (MonitorInfo mi : monitors) {
if (mi.getLockedStackDepth() == i) {
out.println(INDENT + " - locked " + mi); // NOI18N
}
}
}
out.println();
}
示例3: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private static void printThreadInfo(ThreadInfo ti, PrintWriter out) {
// print thread information
printThread(ti, out);
// print stack trace with locks
StackTraceElement[] stacktrace = ti.getStackTrace();
MonitorInfo[] monitors = ti.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
out.println(INDENT + "at " + ste.toString());
for (MonitorInfo mi : monitors) {
if (mi.getLockedStackDepth() == i) {
out.println(INDENT + " - locked " + mi);
}
}
}
out.println();
}
示例4: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private void printThreadInfo(ThreadInfo ti) {
// print thread information
printThread(ti);
// print stack trace with locks
StackTraceElement[] stacktrace = ti.getStackTrace();
MonitorInfo[] monitors = ti.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
System.out.println(INDENT + "at " + ste.toString());
for (MonitorInfo mi : monitors) {
if (mi.getLockedStackDepth() == i) {
System.out.println(INDENT + " - locked " + mi);
}
}
}
System.out.println();
}
示例5: isMonitorLockHeldByThread
import java.lang.management.MonitorInfo; //导入依赖的package包/类
public static boolean isMonitorLockHeldByThread(Object o, Thread t) {
int oihc = System.identityHashCode(o);
ThreadMXBean tmxbean = ManagementFactory.getThreadMXBean();
ThreadInfo[] tinfos = tmxbean.dumpAllThreads(true, false);
for (ThreadInfo ti : tinfos) {
if (!(t != null && t.getId() != ti.getThreadId())) {
for (MonitorInfo mi : ti.getLockedMonitors()) {
if (mi.getIdentityHashCode() == oihc) {
return true;
}
}
}
}
return false;
}
示例6: generateOrdering
import java.lang.management.MonitorInfo; //导入依赖的package包/类
/**
* We cannot simply call getLockedMonitors because it is not guaranteed to
* return the locks in the correct order.
*/
private static void generateOrdering(final List<String> lockOrder,
ThreadInfo info) {
final MonitorInfo[] lockedMonitors = info.getLockedMonitors();
Arrays.sort(lockedMonitors, new Comparator<MonitorInfo>() {
@Override
public int compare(MonitorInfo a, MonitorInfo b) {
return b.getLockedStackDepth() - a.getLockedStackDepth();
}
});
for (MonitorInfo mi : lockedMonitors) {
String lockName = getObjectName(mi);
if (lockName.equals("sun.misc.Launcher$AppClassLoader")) {
// ignore, it shows up everywhere
continue;
}
// Ignore locks which are locked multiple times in
// succession - Java locks are recursive.
if (!lockOrder.contains(lockName)) {
lockOrder.add(lockName);
}
}
}
示例7: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private void printThreadInfo(ThreadInfo ti, StringBuilder dump) {
// print thread information
printThread(ti, dump);
// print stack trace with locks
StackTraceElement[] stacktrace = ti.getStackTrace();
MonitorInfo[] monitors = ti.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
dump.append(INDENT + "at " + ste.toString());
dump.append("\n");
for (int j = 1; j < monitors.length; j++) {
MonitorInfo mi = monitors[j];
if (mi.getLockedStackDepth() == i) {
dump.append(INDENT + " - locked " + mi);
dump.append("\n");
}
}
}
dump.append("\n");
}
示例8: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private void printThreadInfo(ThreadInfo threadInfo) {
printThread(threadInfo);
this.sb.append(INDENT).append(threadInfo.toString()).append("\n");
StackTraceElement[] stacktrace = threadInfo.getStackTrace();
MonitorInfo[] monitors = threadInfo.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
this.sb.append(INDENT).append("at ").append(ste.toString()).append("\n");
for (MonitorInfo mi : monitors) {
if (mi.getLockedStackDepth() == i) {
this.sb.append(INDENT).append(" - locked ").append(mi).append("\n");
}
}
}
}
示例9: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private static void printThreadInfo(ThreadInfo ti, StringBuilder sb) {
// print thread information
printThread(ti, sb);
// print stack trace with locks
StackTraceElement[] stacktrace = ti.getStackTrace();
MonitorInfo[] monitors = ti.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
sb.append(INDENT);
sb.append("at ");
sb.append(ste.toString());
sb.append(System.getProperty("line.separator"));
for (MonitorInfo mi : monitors) {
if (mi.getLockedStackDepth() == i) {
sb.append(INDENT);
sb.append(" - locked ");
sb.append(mi);
sb.append(System.getProperty("line.separator"));
}
}
}
sb.append(System.getProperty("line.separator"));
}
示例10: printThreadInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private void printThreadInfo(ThreadInfo ti, StringBuilder dump) {
// print thread information
printThread(ti, dump);
// print stack trace with locks
StackTraceElement[] stacktrace = ti.getStackTrace();
MonitorInfo[] monitors = ti.getLockedMonitors();
for (int i = 0; i < stacktrace.length; i++) {
StackTraceElement ste = stacktrace[i];
dump.append(TAB).append("at ").append(ste.toString()).append('\n');
for (MonitorInfo mi : monitors) {
if (mi.getLockedStackDepth() == i) {
dump.append(TAB).append(" - locked ").append(mi).append('\n');
}
}
}
dump.append("");
}
示例11: dumpThread
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private static void dumpThread(ThreadInfo thread, Logger log)
{
log.log( Level.SEVERE, "------------------------------" );
//
log.log( Level.SEVERE, "Current Thread: " + thread.getThreadName() );
log.log( Level.SEVERE, "\tPID: " + thread.getThreadId()
+ " | Suspended: " + thread.isSuspended()
+ " | Native: " + thread.isInNative()
+ " | State: " + thread.getThreadState() );
if ( thread.getLockedMonitors().length != 0 )
{
log.log( Level.SEVERE, "\tThread is waiting on monitor(s):" );
for ( MonitorInfo monitor : thread.getLockedMonitors() )
{
log.log( Level.SEVERE, "\t\tLocked on:" + monitor.getLockedStackFrame() );
}
}
log.log( Level.SEVERE, "\tStack:" );
//
for ( StackTraceElement stack : thread.getStackTrace() )
{
log.log( Level.SEVERE, "\t\t" + stack );
}
}
示例12: setMonitorInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private static void setMonitorInfo(TThreadDump threadDump, ThreadInfo threadInfo) {
MonitorInfo[] monitorInfos = threadInfo.getLockedMonitors();
if (monitorInfos != null) {
for (MonitorInfo each : monitorInfos) {
if (each == null) {
continue;
}
TMonitorInfo tMonitorInfo = new TMonitorInfo();
tMonitorInfo.setStackDepth(each.getLockedStackDepth());
tMonitorInfo.setStackFrame(each.getLockedStackFrame().toString());
threadDump.addToLockedMonitors(tMonitorInfo);
}
} else {
threadDump.setLockedMonitors(Collections.<TMonitorInfo>emptyList());
}
}
示例13: outputMonitors
import java.lang.management.MonitorInfo; //导入依赖的package包/类
@Override
int outputMonitors(ThreadInfo info, int stack_depth, int monitor_pointer, StringBuffer buffer) {
MonitorInfo[] locked_monitors = info.getLockedMonitors();
boolean check_next_monitor;
do
{
check_next_monitor = false;
if (monitor_pointer < locked_monitors.length)
{
MonitorInfo monitor_info = locked_monitors[monitor_pointer];
if (monitor_info.getLockedStackDepth() == stack_depth)
{
formatLock(monitor_info, "locked", buffer);
buffer.append("\n");
monitor_pointer++;
check_next_monitor = true;
}
}
} while (check_next_monitor);
return monitor_pointer;
}
示例14: printMonitorInfo
import java.lang.management.MonitorInfo; //导入依赖的package包/类
private static void printMonitorInfo(ThreadInfo ti, MonitorInfo[] monitors, StringBuilder sb) {
sb.append("\tLocked monitors: count = " + monitors.length).append("\n");
for (MonitorInfo mi : monitors) {
sb.append("\t - " + mi + " locked at ").append("\n");
sb.append("\t " + mi.getLockedStackDepth() + " "
+ mi.getLockedStackFrame()).append("\n");
}
}