home *** CD-ROM | disk | FTP | other *** search
- package sun.management;
-
- import java.lang.management.ThreadInfo;
- import java.lang.management.ThreadMXBean;
-
- class ThreadImpl implements ThreadMXBean {
- private final VMManagement jvm;
- private boolean contentionMonitoringEnabled = false;
- private boolean cpuTimeEnabled;
-
- ThreadImpl(VMManagement var1) {
- this.jvm = var1;
- this.cpuTimeEnabled = this.jvm.isThreadCpuTimeEnabled();
- }
-
- public int getThreadCount() {
- return this.jvm.getLiveThreadCount();
- }
-
- public int getPeakThreadCount() {
- return this.jvm.getPeakThreadCount();
- }
-
- public long getTotalStartedThreadCount() {
- return this.jvm.getTotalThreadCount();
- }
-
- public int getDaemonThreadCount() {
- return this.jvm.getDaemonThreadCount();
- }
-
- public boolean isThreadContentionMonitoringSupported() {
- return this.jvm.isThreadContentionMonitoringSupported();
- }
-
- public synchronized boolean isThreadContentionMonitoringEnabled() {
- if (!this.isThreadContentionMonitoringSupported()) {
- throw new UnsupportedOperationException("Thread contention monitoring is not supported.");
- } else {
- return this.contentionMonitoringEnabled;
- }
- }
-
- public boolean isThreadCpuTimeSupported() {
- return this.jvm.isOtherThreadCpuTimeSupported();
- }
-
- public boolean isCurrentThreadCpuTimeSupported() {
- return this.jvm.isCurrentThreadCpuTimeSupported();
- }
-
- public boolean isThreadCpuTimeEnabled() {
- if (!this.isThreadCpuTimeSupported() && !this.isCurrentThreadCpuTimeSupported()) {
- throw new UnsupportedOperationException("Thread CPU time measurement is not supported");
- } else {
- return this.cpuTimeEnabled;
- }
- }
-
- public long[] getAllThreadIds() {
- ManagementFactory.checkMonitorAccess();
- Thread[] var1 = getThreads();
- int var2 = var1.length;
- long[] var3 = new long[var2];
-
- for(int var4 = 0; var4 < var2; ++var4) {
- Thread var5 = var1[var4];
- var3[var4] = var5.getId();
- }
-
- return var3;
- }
-
- public ThreadInfo getThreadInfo(long var1) {
- if (var1 <= 0L) {
- throw new IllegalArgumentException("Invalid thread ID parameter: " + var1);
- } else {
- long[] var3 = new long[]{var1};
- ThreadInfo[] var4 = this.getThreadInfo(var3, 0);
- return var4[0];
- }
- }
-
- public ThreadInfo getThreadInfo(long var1, int var3) {
- if (var1 <= 0L) {
- throw new IllegalArgumentException("Invalid thread ID parameter: " + var1);
- } else if (var3 < 0) {
- throw new IllegalArgumentException("Invalid maxDepth parameter: " + var3);
- } else {
- long[] var4 = new long[]{var1};
- ThreadInfo[] var5 = this.getThreadInfo(var4, var3);
- return var5[0];
- }
- }
-
- public ThreadInfo[] getThreadInfo(long[] var1) {
- return this.getThreadInfo(var1, 0);
- }
-
- public ThreadInfo[] getThreadInfo(long[] var1, int var2) {
- if (var1 == null) {
- throw new NullPointerException("Null ids parameter.");
- } else if (var2 < 0) {
- throw new IllegalArgumentException("Invalid maxDepth parameter: " + var2);
- } else {
- ManagementFactory.checkMonitorAccess();
- ThreadInfo[] var3 = new ThreadInfo[var1.length];
- if (var2 == Integer.MAX_VALUE) {
- getThreadInfo0(var1, -1, var3);
- } else {
- getThreadInfo0(var1, var2, var3);
- }
-
- return var3;
- }
- }
-
- public void setThreadContentionMonitoringEnabled(boolean var1) {
- if (!this.isThreadContentionMonitoringSupported()) {
- throw new UnsupportedOperationException("Thread contention monitoring is not supported");
- } else {
- ManagementFactory.checkControlAccess();
- synchronized(this) {
- if (this.contentionMonitoringEnabled != var1) {
- if (var1) {
- resetContentionTimes0(0L);
- }
-
- setThreadContentionMonitoringEnabled0(var1);
- this.contentionMonitoringEnabled = var1;
- }
-
- }
- }
- }
-
- public long getCurrentThreadCpuTime() {
- if (!this.isCurrentThreadCpuTimeSupported()) {
- throw new UnsupportedOperationException("Current thread CPU time measurement is not supported.");
- } else {
- return !this.isThreadCpuTimeEnabled() ? -1L : getThreadTotalCpuTime0(0L);
- }
- }
-
- public long getThreadCpuTime(long var1) {
- if (!this.isThreadCpuTimeSupported() && !this.isCurrentThreadCpuTimeSupported()) {
- throw new UnsupportedOperationException("Thread CPU Time Measurement is not supported.");
- } else if (!this.isThreadCpuTimeSupported() && var1 != Thread.currentThread().getId()) {
- throw new UnsupportedOperationException("Thread CPU Time Measurement is only supported for the current thread.");
- } else if (var1 <= 0L) {
- throw new IllegalArgumentException("Invalid thread ID parameter: " + var1);
- } else if (!this.isThreadCpuTimeEnabled()) {
- return -1L;
- } else {
- return var1 == Thread.currentThread().getId() ? getThreadTotalCpuTime0(0L) : getThreadTotalCpuTime0(var1);
- }
- }
-
- public long getCurrentThreadUserTime() {
- if (!this.isCurrentThreadCpuTimeSupported()) {
- throw new UnsupportedOperationException("Current thread CPU time measurement is not supported.");
- } else {
- return !this.isThreadCpuTimeEnabled() ? -1L : getThreadUserCpuTime0(0L);
- }
- }
-
- public long getThreadUserTime(long var1) {
- if (!this.isThreadCpuTimeSupported() && !this.isCurrentThreadCpuTimeSupported()) {
- throw new UnsupportedOperationException("Thread CPU time measurement is not supported.");
- } else if (!this.isThreadCpuTimeSupported() && var1 != Thread.currentThread().getId()) {
- throw new UnsupportedOperationException("Thread CPU time measurement is only supported for the current thread.");
- } else if (var1 <= 0L) {
- throw new IllegalArgumentException("Invalid thread ID parameter: " + var1);
- } else if (!this.isThreadCpuTimeEnabled()) {
- return -1L;
- } else {
- return var1 == Thread.currentThread().getId() ? getThreadUserCpuTime0(0L) : getThreadUserCpuTime0(var1);
- }
- }
-
- public void setThreadCpuTimeEnabled(boolean var1) {
- if (!this.isThreadCpuTimeSupported() && !this.isCurrentThreadCpuTimeSupported()) {
- throw new UnsupportedOperationException("Thread CPU time measurement is not supported");
- } else {
- ManagementFactory.checkControlAccess();
- synchronized(this) {
- if (this.cpuTimeEnabled != var1) {
- setThreadCpuTimeEnabled0(var1);
- this.cpuTimeEnabled = var1;
- }
-
- }
- }
- }
-
- public long[] findMonitorDeadlockedThreads() {
- ManagementFactory.checkMonitorAccess();
- Thread[] var1 = findMonitorDeadlockedThreads0();
- if (var1 == null) {
- return null;
- } else {
- long[] var2 = new long[var1.length];
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- Thread var4 = var1[var3];
- var2[var3] = var4.getId();
- }
-
- return var2;
- }
- }
-
- public long[] findDeadlockedThreads() {
- if (!this.isSynchronizerUsageSupported()) {
- throw new UnsupportedOperationException("Monitoring of Synchronizer Usage is not supported.");
- } else {
- ManagementFactory.checkMonitorAccess();
- Thread[] var1 = findDeadlockedThreads0();
- if (var1 == null) {
- return null;
- } else {
- long[] var2 = new long[var1.length];
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- Thread var4 = var1[var3];
- var2[var3] = var4.getId();
- }
-
- return var2;
- }
- }
- }
-
- public void resetPeakThreadCount() {
- ManagementFactory.checkControlAccess();
- resetPeakThreadCount0();
- }
-
- public boolean isObjectMonitorUsageSupported() {
- return this.jvm.isObjectMonitorUsageSupported();
- }
-
- public boolean isSynchronizerUsageSupported() {
- return this.jvm.isSynchronizerUsageSupported();
- }
-
- public ThreadInfo[] getThreadInfo(long[] var1, boolean var2, boolean var3) {
- if (var1 == null) {
- throw new NullPointerException("Null ids parameter.");
- } else if (var2 && !this.isObjectMonitorUsageSupported()) {
- throw new UnsupportedOperationException("Monitoring of Object Monitor Usage is not supported.");
- } else if (var3 && !this.isSynchronizerUsageSupported()) {
- throw new UnsupportedOperationException("Monitoring of Synchronizer Usage is not supported.");
- } else {
- ManagementFactory.checkMonitorAccess();
- return dumpThreads0(var1, var2, var3);
- }
- }
-
- public ThreadInfo[] dumpAllThreads(boolean var1, boolean var2) {
- if (var1 && !this.isObjectMonitorUsageSupported()) {
- throw new UnsupportedOperationException("Monitoring of Object Monitor Usage is not supported.");
- } else if (var2 && !this.isSynchronizerUsageSupported()) {
- throw new UnsupportedOperationException("Monitoring of Synchronizer Usage is not supported.");
- } else {
- ManagementFactory.checkMonitorAccess();
- return dumpThreads0((long[])null, var1, var2);
- }
- }
-
- private static native Thread[] getThreads();
-
- private static native void getThreadInfo0(long[] var0, int var1, ThreadInfo[] var2);
-
- private static native long getThreadTotalCpuTime0(long var0);
-
- private static native long getThreadUserCpuTime0(long var0);
-
- private static native void setThreadCpuTimeEnabled0(boolean var0);
-
- private static native void setThreadContentionMonitoringEnabled0(boolean var0);
-
- private static native Thread[] findMonitorDeadlockedThreads0();
-
- private static native Thread[] findDeadlockedThreads0();
-
- private static native void resetPeakThreadCount0();
-
- private static native ThreadInfo[] dumpThreads0(long[] var0, boolean var1, boolean var2);
-
- private static native void resetContentionTimes0(long var0);
- }
-