|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface ThreadMXBean
Java 仮想マシンのスレッドシステムの管理インタフェースです。
Java 仮想マシンは、このインタフェースの実装クラスの単一インスタンスを持ちます。このインタフェースを実装しているインスタンスは、ManagementFactory.getThreadMXBean()
メソッドを呼び出して取得できる、あるいは platform MBeanServer
メソッドから取得できる MXBean です。
MBeanServer 内でスレッドシステムの MXBean を一意に識別するための ObjectName は以下のとおりです。
java.lang:type=Threading
Thread.getId()
メソッドの呼び出しにより返された正の long 型の値です。スレッド ID は一意であり、その寿命を通じて変更されることはありません。スレッドが終了すると、スレッド ID は再利用可能です。
このインタフェースの一部のメソッドは、入力パラメータとしてスレッド ID またはスレッド ID の配列を取得してスレッドごとの情報を返します。
isThreadCpuTimeSupported()
メソッドを使って、Java 仮想マシンが任意のスレッドについて CPU 時間の測定をサポートするかどうかを判定できます。また、isCurrentThreadCpuTimeSupported()
メソッドを使って、Java 仮想マシンが現在のスレッドの CPU 時間の測定をサポートしているかどうかを判定できます。任意のスレッドの CPU 時間の測定をサポートしている Java 仮想マシンの実装は、現在のスレッドの CPU 時間の測定もサポートしています。
このインタフェースで提供された CPU 時間は、ナノ秒単位の精度を提供しますが、必ずしもナノ秒の正確度ではありません。
Java 仮想マシンでは、デフォルトで CPU 時間の測定を無効にできます。isThreadCpuTimeEnabled()
メソッドと setThreadCpuTimeEnabled(boolean)
メソッドを使って、CPU 時間測定が有効になっていることをテストしたり、測定のサポートを有効または無効にしたりすることができます。スレッド CPU 測定を有効にすると、一部の Java 仮想マシンの実装では、負荷が大きくなる可能性があります。
isThreadContentionMonitoringSupported()
メソッドを使って、Java 仮想マシンがスレッドコンテンション監視をサポートしているかどうかを判定できます。
スレッドコンテンション監視はデフォルトで無効です。setThreadContentionMonitoringEnabled(boolean)
メソッドを使って、スレッドコンテンション監視を有効にすることができます。
メソッドの概要 | |
---|---|
long[] |
findMonitorDeadlockedThreads()
オブジェクトモニターの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。 |
long[] |
getAllThreadIds()
すべてのライブスレッドの ID を返します。 |
long |
getCurrentThreadCpuTime()
現在のスレッドの合計 CPU 時間をナノ秒単位で返します。 |
long |
getCurrentThreadUserTime()
現在のスレッドがユーザモードで実行した CPU 時間 (ナノ秒単位) を返します。 |
int |
getDaemonThreadCount()
ライブデーモンスレッドの現在の数を返します。 |
int |
getPeakThreadCount()
Java 仮想マシンが起動された以降の、またはピークがリセットされた以降の、ピークライブスレッドカウントを返します。 |
int |
getThreadCount()
デーモンスレッドとデーモン以外のスレッドを含むライブスレッドの現在の数を返します。 |
long |
getThreadCpuTime(long id)
指定された ID のスレッドの合計 CPU 時間 (ナノ秒単位) を返します。 |
ThreadInfo |
getThreadInfo(long id)
スタックトレースを持たない指定された id のスレッドのスレッド情報を返します。 |
ThreadInfo[] |
getThreadInfo(long[] ids)
スタックトレースを持たない入力配列 ids にある ID を持つスレッドごとのスレッド情報を返します。 |
ThreadInfo[] |
getThreadInfo(long[] ids,
int maxDepth)
入力配列 ids に ID を持つ各スレッドのスレッド情報を返します。 |
ThreadInfo |
getThreadInfo(long id,
int maxDepth)
指定された id のスレッドのスレッド情報を返します。 |
long |
getThreadUserTime(long id)
指定された ID のスレッドがユーザモードで実行した CPU 時間 (ナノ秒単位) を返します。 |
long |
getTotalStartedThreadCount()
Java 仮想マシンが起動してから作成および起動されたスレッドの合計数を返します。 |
boolean |
isCurrentThreadCpuTimeSupported()
Java 仮想マシンが現在のスレッドの CPU 時間測定をサポートするかどうかをテストします。 |
boolean |
isThreadContentionMonitoringEnabled()
スレッドコンテンション監視が有効かどうかをテストします。 |
boolean |
isThreadContentionMonitoringSupported()
Java 仮想マシンがスレッドコンテンション監視をサポートするかどうかをテストします。 |
boolean |
isThreadCpuTimeEnabled()
スレッドの CPU 時間測定が有効かどうかをテストします。 |
boolean |
isThreadCpuTimeSupported()
Java 仮想マシンの実装が任意のスレッドの CPU 時間測定をサポートするかどうかをテストします。 |
void |
resetPeakThreadCount()
ピークスレッドカウントをライブスレッドの現在の数にリセットします。 |
void |
setThreadContentionMonitoringEnabled(boolean enable)
スレッドコンテンション監視を有効または無効にします。 |
void |
setThreadCpuTimeEnabled(boolean enable)
スレッドの CPU 時間測定を有効または無効にします。 |
メソッドの詳細 |
---|
int getThreadCount()
int getPeakThreadCount()
long getTotalStartedThreadCount()
int getDaemonThreadCount()
long[] getAllThreadIds()
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo getThreadInfo(long id)
getThreadInfo(id, 0);
このメソッドは、指定された ID のスレッドに関するスレッド情報を表す ThreadInfo オブジェクトを返します。返された ThreadInfo オブジェクトのスタックトレースは、StackTraceElement の空の配列になります。 指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは null を返します。指定された ID が起動され、生存している場合、スレッドは生存しています。
MBeanServer アクセス:
ThreadInfo のマップ型は、ThreadInfo
で指定された属性を持つ CompositeData です。
id
- スレッドのスレッド ID。正の値でなければならない
ThreadInfo
オブジェクト。指定された ID のスレッドが生存または存在していない場合は null
IllegalArgumentException
- id <= 0 の場合
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo[] getThreadInfo(long[] ids)
getThreadInfo
(ids, 0);
このメソッドは、ThreadInfo オブジェクトの配列を返します。各 ThreadInfo オブジェクトのスタックトレースは、StackTraceElement の空の配列になります。 指定された ID のスレッドが生存していないか、存在していない場合、返された配列の対応する要素は、null を含みます。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。
MBeanServer アクセス:
ThreadInfo のマップ型は、ThreadInfo
で指定された属性を持つ CompositeData です。
ids
- スレッド ID の配列
ThreadInfo
オブジェクトの配列
IllegalArgumentException
- 入力配列 ids の要素が <= 0 である場合
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo getThreadInfo(long id, int maxDepth)
Java 仮想マシンがスレッドのスタックトレース情報を持たない場合、または maxDepth == 0 の場合、ThreadInfo オブジェクトのスタックトレースは StackTraceElement の空の配列になります。
指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは null を返します。指定された ID が起動され、生存している場合、スレッドは生存しています。
MBeanServer アクセス:
ThreadInfo のマップ型は、ThreadInfo
で指定された属性を持つ CompositeData です。
id
- スレッドのスレッド ID。正の値でなければならないmaxDepth
- ダンプされるスタックトレースのエントリの最大数。Integer.MAX_VALUE を使って、スタック全体をダンプするよう要求できる
ThreadInfo
。指定された ID のスレッドが生存または存在していない場合は null
IllegalArgumentException
- id <= 0 の場合
IllegalArgumentException
- maxDepth is negative の場合
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
Java 仮想マシンがスレッドのスタックトレース情報を持たない場合、または maxDepth == 0 の場合、ThreadInfo オブジェクトのスタックトレースは StackTraceElement の空の配列になります。
このメソッドは、ThreadInfo オブジェクトの配列を返します。配列の各要素は、ids 配列と同じインデックスを持つスレッドに関するスレッド情報です。指定された ID のスレッドが生存していないか、存在しない場合、返される配列の対応する要素に null が設定されます。指定されたスレッド ID が起動されたか生存している場合、スレッドは生存しています。
MBeanServer アクセス:
ThreadInfo のマップ型は、ThreadInfo
で指定された属性を持つ CompositeData です。
ids
- スレッド ID の配列maxDepth
- ダンプされるスタックトレースのエントリの最大数。Integer.MAX_VALUE を使って、スタック全体をダンプするよう要求できる
ThreadInfo
オブジェクトの配列
IllegalArgumentException
- maxDepth is negative の場合
IllegalArgumentException
- 入力配列 ids の要素が <= 0 である場合
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合boolean isThreadContentionMonitoringSupported()
boolean isThreadContentionMonitoringEnabled()
UnsupportedOperationException
- Java 仮想マシンがスレッドコンテンション監視をサポートしない場合isThreadContentionMonitoringSupported()
void setThreadContentionMonitoringEnabled(boolean enable)
enable
- 有効にする場合は true、無効にする場合は false
UnsupportedOperationException
- Java 仮想マシンがスレッドコンテンション監視をサポートしない場合
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("control") を持たない場合isThreadContentionMonitoringSupported()
long getCurrentThreadCpuTime()
このメソッドは、ローカル管理で使用する簡易メソッドであり、以下を呼び出すのと同等です。
getThreadCpuTime
(Thread.currentThread().getId());
UnsupportedOperationException
- Java 仮想マシンが現在のスレッドの CPU 時間測定をサポートしない場合getCurrentThreadUserTime()
,
isCurrentThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
long getCurrentThreadUserTime()
このメソッドは、ローカル管理で使用する簡易メソッドであり、以下を呼び出すのと同等です。
getThreadUserTime
(Thread.currentThread().getId());
UnsupportedOperationException
- Java 仮想マシンが現在のスレッドの CPU 時間測定をサポートしない場合getCurrentThreadCpuTime()
,
isCurrentThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
long getThreadCpuTime(long id)
指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは -1 を返します。CPU 時間測定が無効の場合、このメソッドは -1 を返します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。
スレッドが起動されたあとに CPU 時間測定が有効になった場合、Java 仮想マシンの実装では、CPU 時間測定が起動されたポイントとして CPU 時間測定機能が有効になった時間以前の任意の時間を選択できます。
id
- スレッドのスレッド ID
IllegalArgumentException
- id <= 0 の場合
UnsupportedOperationException
- Java 仮想マシンがほかのスレッドの CPU 時間測定をサポートしない場合getThreadUserTime(long)
,
isThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
long getThreadUserTime(long id)
指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは -1 を返します。CPU 時間測定が無効の場合、このメソッドは -1 を返します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。
スレッドが起動されたあとに CPU 時間測定が有効になった場合、Java 仮想マシンの実装では、CPU 時間測定が起動されたポイントとして CPU 時間測定機能が有効になった時間以前の任意の時間を選択できます。
id
- スレッドのスレッド ID
IllegalArgumentException
- id <= 0 の場合
UnsupportedOperationException
- Java 仮想マシンがほかのスレッドの CPU 時間測定をサポートしない場合getThreadCpuTime(long)
,
isThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
boolean isThreadCpuTimeSupported()
boolean isCurrentThreadCpuTimeSupported()
isThreadCpuTimeSupported()
が true を返す場合、このメソッドは true を返します。
boolean isThreadCpuTimeEnabled()
UnsupportedOperationException
- Java 仮想マシンがほかのスレッドばかりでなく現在のスレッドの CPU 時間測定もサポートしない場合isThreadCpuTimeSupported()
,
isCurrentThreadCpuTimeSupported()
void setThreadCpuTimeEnabled(boolean enable)
enable
- 有効にする場合は true、無効にする場合は false
UnsupportedOperationException
- Java 仮想マシンが任意のスレッドばかりでなく現在のスレッドの CPU 時間測定もサポートしない場合
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("control") を持たない場合isThreadCpuTimeSupported()
,
isCurrentThreadCpuTimeSupported()
long[] findMonitorDeadlockedThreads()
Object.wait
呼び出しのあと、同期ブロックに再入するのを待機しています。ここでは、サイクル中の別のスレッドにより保持されている別のモニターの取得を試行している間、各スレッドは 1 つのモニターを保有しています。
公式には、スレッドが、「ほかのスレッドにより保有されるオブジェクトモニターを待機している」関係にあるサイクルの一部である場合、スレッドは「モニターデッドロック」されます。もっとも簡単なケースについて説明すると、スレッド A は、スレッド B が所有するモニターを待機するのをブロックされ、スレッド B はスレッド A が所有するモニターを待機するのをブロックされます。
このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合void resetPeakThreadCount()
SecurityException
- セキュリティマネージャが存在する場合で、呼び出し元が ManagementPermission("control") を持たない場合getPeakThreadCount()
,
getThreadCount()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。