JavaTM Platform
Standard Ed. 6

java.lang.management
インタフェース ThreadMXBean


public interface ThreadMXBean

Java 仮想マシンのスレッドシステムの管理インタフェースです。

Java 仮想マシンは、このインタフェースの実装クラスの単一インスタンスを持ちます。このインタフェースを実装しているインスタンスは、ManagementFactory.getThreadMXBean() メソッドを呼び出して取得できる、あるいは platform MBeanServer メソッドから取得できる MXBean です。

MBeanServer 内でスレッドシステムの MXBean を一意に識別するための ObjectName は以下のとおりです。

java.lang:type=Threading

スレッド ID

スレッド ID は、スレッドの Thread.getId() メソッドの呼び出しにより返された正の long 型の値です。スレッド ID は一意であり、その寿命を通じて変更されることはありません。スレッドが終了すると、スレッド ID は再利用可能です。

このインタフェースの一部のメソッドは、入力パラメータとしてスレッド ID またはスレッド ID の配列を取得してスレッドごとの情報を返します。

スレッド CPU 時間

Java 仮想マシンの実装では、任意のスレッドやスレッド以外について、現在のスレッドの CPU 時間の測定をサポートできます。

isThreadCpuTimeSupported() メソッドを使用すると、Java 仮想マシンで任意のスレッドの CPU 時間を測定できるかどうかを判定できます。isCurrentThreadCpuTimeSupported() メソッドを使用すると、Java 仮想マシンが現在のスレッドの CPU 時間の測定をサポートしているかどうかを判定できます。任意のスレッドの CPU 時間測定をサポートする Java 仮想マシンの実装は現在のスレッドの CPU 時間測定もサポートします。

このインタフェースで提供された CPU 時間は、ナノ秒単位の精度を提供しますが、必ずしもナノ秒の正確度ではありません。

Java 仮想マシンでは、デフォルトで CPU 時間の測定を無効にできます。isThreadCpuTimeEnabled() メソッドと setThreadCpuTimeEnabled(boolean) メソッドを使って、CPU 時間測定が有効になっていることをテストしたり、測定のサポートを有効または無効にしたりすることができます。スレッド CPU 測定を有効にすると、一部の Java 仮想マシンの実装では、負荷が大きくなる可能性があります。

スレッドコンテンション監視

一部の Java 仮想マシンは、スレッドコンテンション監視をサポートします。スレッドコンテンション監視が有効な場合、スレッドが同期をブロックしたか通知を待機していた累積経過時間が収集され、ThreadInfo オブジェクトで返されます。

isThreadContentionMonitoringSupported() メソッドを使って、Java 仮想マシンがスレッドコンテンション監視をサポートしているかどうかを判定できます。スレッドコンテンション監視はデフォルトで無効です。setThreadContentionMonitoringEnabled(boolean) メソッドを使って、スレッドコンテンション監視を有効にすることができます。

同期情報とデッドロック検出

一部の Java 仮想マシンは、object monitor usage および ownable synchronizer usage の監視をサポートしている場合があります。getThreadInfo(long[], boolean, boolean) メソッドと dumpAllThreads(boolean, boolean) メソッドを使用すると、スレッドスタックトレースおよび同期情報 (スレッドが取得をブロックされているまたは待機している lock について、スレッドが現在所有しているロックについてなど) を取得できます。

ThreadMXBean インタフェースは、実行中アプリケーションのデッドロックを見つけるための findMonitorDeadlockedThreads() メソッドおよび findDeadlockedThreads() メソッドを提供します。

導入されたバージョン:
1.5
関連項目:
JMX 仕様。, MXBean にアクセスする方法

メソッドの概要
 ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
          スタックトレースおよび同期情報を持つすべてのライブスレッドのスレッド情報を返します。
 long[] findDeadlockedThreads()
          オブジェクトモニターまたは所有可能なシンクロナイザの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。
 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, boolean lockedMonitors, boolean lockedSynchronizers)
          スタックトレースおよび同期情報を持つ入力配列 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 isObjectMonitorUsageSupported()
          Java 仮想マシンがオブジェクトモニターの使用量の監視をサポートするかどうかをテストします。
 boolean isSynchronizerUsageSupported()
          Java 仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートするかどうかをテストします。
 boolean isThreadContentionMonitoringEnabled()
          スレッドコンテンション監視が有効かどうかをテストします。
 boolean isThreadContentionMonitoringSupported()
          Java 仮想マシンがスレッドコンテンション監視をサポートするかどうかをテストします。
 boolean isThreadCpuTimeEnabled()
          スレッドの CPU 時間測定が有効かどうかをテストします。
 boolean isThreadCpuTimeSupported()
          Java 仮想マシンの実装が任意のスレッドの CPU 時間測定をサポートするかどうかをテストします。
 void resetPeakThreadCount()
          ピークスレッドカウントをライブスレッドの現在の数にリセットします。
 void setThreadContentionMonitoringEnabled(boolean enable)
          スレッドコンテンション監視を有効または無効にします。
 void setThreadCpuTimeEnabled(boolean enable)
          スレッドの CPU 時間測定を有効または無効にします。
 

メソッドの詳細

getThreadCount

int getThreadCount()
デーモンスレッドとデーモン以外のスレッドを含むライブスレッドの現在の数を返します。

戻り値:
ライブスレッドの現在の数

getPeakThreadCount

int getPeakThreadCount()
Java 仮想マシンが起動された以降の、またはピークがリセットされた以降の、ピークライブスレッドカウントを返します。

戻り値:
ピークライブスレッドカウント

getTotalStartedThreadCount

long getTotalStartedThreadCount()
Java 仮想マシンが起動してから作成および起動されたスレッドの合計数を返します。

戻り値:
起動されたスレッドの合計数

getDaemonThreadCount

int getDaemonThreadCount()
ライブデーモンスレッドの現在の数を返します。

戻り値:
ライブデーモンスレッドの現在の数

getAllThreadIds

long[] getAllThreadIds()
すべてのライブスレッドの ID を返します。返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。

戻り値:
スレッド ID を含む long 型の配列
例外:
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合

getThreadInfo

ThreadInfo getThreadInfo(long id)
スタックトレースを持たない指定された id のスレッドのスレッド情報を返します。このメソッドは、以下を呼び出すのと同等です。
getThreadInfo(id, 0);

このメソッドは、指定された ID のスレッドに関するスレッド情報を表す ThreadInfo オブジェクトを返します。返された ThreadInfo オブジェクトのスタックトレース、ロックされたモニター、およびロックされたシンクロナイザは、空になります。 指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは null を返します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from メソッドで指定された属性を持つ CompositeData です。

パラメータ:
id - スレッドのスレッド ID。正の値でなければならない
戻り値:
スタックトレース、ロックされたモニター、およびシンクロナイザ情報を持たない、 指定された ID のスレッドに関する ThreadInfo オブジェクト。 指定された ID のスレッドが生存または存在していない場合は null
例外:
IllegalArgumentException - id <= 0 の場合
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids)
スタックトレースを持たない入力配列 ids にある ID を持つスレッドごとのスレッド情報を返します。このメソッドは、以下を呼び出すのと同等です。
   getThreadInfo(ids, 0);
 

このメソッドは、ThreadInfo オブジェクトの配列を返します。各 ThreadInfo オブジェクトのスタックトレース、ロックされたモニター、およびロックされたシンクロナイザは、空になります。 指定された ID のスレッドが生存していないか、存在していない場合、返された配列の対応する要素は、null を含みます。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from メソッドで指定された属性を持つ CompositeData です。

パラメータ:
ids - スレッド ID の配列
戻り値:
スタックトレース、ロックされたモニター、およびシンクロナイザ情報を持たない ID の入力配列の対応する要素に ID があるスレッドの情報を含む ThreadInfo オブジェクトの配列
例外:
IllegalArgumentException - 入力配列 ids の要素が <= 0 である場合
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合

getThreadInfo

ThreadInfo getThreadInfo(long id,
                         int maxDepth)
指定された数のスタックトレース要素から成るスタックトレースを持つ、指定された id のスレッドのスレッド情報を返します。maxDepth パラメータは、スタックトレースから取得される StackTraceElement の最大数を示します。maxDepth == Integer.MAX_VALUE の場合、スレッドのスタックトレース全体がダンプされます。maxDepth == 0 の場合、スレッドのスタックトレースはダンプされません。このメソッドは、スレッドのロックされたモニターおよびロックされたシンクロナイザを取得しません。

Java 仮想マシンがスレッドのスタックトレース情報を持たない場合、または maxDepth == 0 の場合、ThreadInfo オブジェクトのスタックトレースは StackTraceElement の空の配列になります。

指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは null を返します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from メソッドで指定された属性を持つ CompositeData です。

パラメータ:
id - スレッドのスレッド ID。正の値でなければならない
maxDepth - ダンプされるスタックトレースのエントリの 最大数。Integer.MAX_VALUE を使って、 タスク全体をダンプするよう要求できる
戻り値:
スタックトレース、ロックされたモニター、およびシンクロナイザ情報を持たない、 指定された ID のスレッドに関する ThreadInfo。 指定された ID のスレッドが生存または存在していない場合は null
例外:
IllegalArgumentException - id <= 0 の場合
IllegalArgumentException - maxDepth is negative の場合
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids,
                           int maxDepth)
指定された数のスタックトレース要素から成るスタックトレースを持つ、入力配列 ids にある ID を持つスレッドごとのスレッド情報を返します。maxDepth パラメータは、スタックトレースから取得される StackTraceElement の最大数を示します。maxDepth == Integer.MAX_VALUE の場合、スレッドのスタックトレース全体がダンプされます。maxDepth == 0 の場合、スレッドのスタックトレースはダンプされません。このメソッドは、スレッドのロックされたモニターおよびロックされたシンクロナイザは取得しません。

Java 仮想マシンがスレッドのスタックトレース情報を持たない場合、または maxDepth == 0 の場合、ThreadInfo オブジェクトのスタックトレースは StackTraceElement の空の配列になります。

このメソッドは、ThreadInfo オブジェクトの配列を返します。 配列の各要素は、ids 配列と同じインデックスを持つスレッドに関するスレッド情報です。指定された ID のスレッドが生存していないか、存在しない場合、返される配列の対応する要素に null が設定されます。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from メソッドで指定された属性を持つ CompositeData です。

パラメータ:
ids - スレッド ID の配列
maxDepth - ダンプされるスタックトレースのエントリの 最大数。Integer.MAX_VALUE を使って、 タスク全体をダンプするよう要求できる
戻り値:
スタックトレース、ロックされたモニター、およびシンクロナイザ情報を持たない ID の入力配列の対応する要素に ロックされたモニターおよびシンクロナイザ情報を持たない ID の入力配列の要素
例外:
IllegalArgumentException - maxDepth is negative の場合
IllegalArgumentException - 入力配列 ids の要素が <= 0 である場合
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合

isThreadContentionMonitoringSupported

boolean isThreadContentionMonitoringSupported()
Java 仮想マシンがスレッドコンテンション監視をサポートするかどうかをテストします。

戻り値:
Java 仮想 マシンがスレッドコンテンション監視をサポートする場合は true、 そうでない場合は false

isThreadContentionMonitoringEnabled

boolean isThreadContentionMonitoringEnabled()
スレッドコンテンション監視が有効かどうかをテストします。

戻り値:
スレッドコンテンション監視が有効な場合は true、 そうでない場合は false
例外:
UnsupportedOperationException - Java 仮想マシンが スレッドコンテンション監視をサポートしない場合
関連項目:
isThreadContentionMonitoringSupported()

setThreadContentionMonitoringEnabled

void setThreadContentionMonitoringEnabled(boolean enable)
スレッドコンテンション監視を有効または無効にします。スレッドコンテンション監視はデフォルトで無効に設定されています。

パラメータ:
enable - 有効にする場合は true、 無効にする場合は false
例外:
UnsupportedOperationException - Java 仮想マシンが スレッドコンテンション監視をサポートしない場合
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合
関連項目:
isThreadContentionMonitoringSupported()

getCurrentThreadCpuTime

long getCurrentThreadCpuTime()
現在のスレッドの合計 CPU 時間をナノ秒単位で返します。戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。実装がユーザーモード時とシステムモード時を区別する場合、返される CPU 時間は、ユーザーモードまたはシステムモードで現在のスレッドが実行した時間の合計です。

このメソッドは、ローカル管理で使用する簡易メソッドであり、以下を呼び出すのと同等です。

   getThreadCpuTime(Thread.currentThread().getId());
 

戻り値:
CPU 時間測定が有効な場合は、現在のスレッドの 合計 CPU 時間。そうでない場合は -1
例外:
UnsupportedOperationException - Java 仮想マシンが 現在のスレッドの CPU 時間測定を サポートしない場合
関連項目:
getCurrentThreadUserTime(), isCurrentThreadCpuTimeSupported(), isThreadCpuTimeEnabled(), setThreadCpuTimeEnabled(boolean)

getCurrentThreadUserTime

long getCurrentThreadUserTime()
現在のスレッドがユーザーモードで実行した CPU 時間 (ナノ秒単位) を返します。戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。

このメソッドは、ローカル管理で使用する簡易メソッドであり、以下を呼び出すのと同等です。

   getThreadUserTime(Thread.currentThread().getId());
 

戻り値:
CPU 時間測定が有効な場合は、現在のスレッドの ユーザーレベル CPU 時間。そうでない場合は -1
例外:
UnsupportedOperationException - Java 仮想マシンが 現在のスレッドの CPU 時間測定を サポートしない場合
関連項目:
getCurrentThreadCpuTime(), isCurrentThreadCpuTimeSupported(), isThreadCpuTimeEnabled(), setThreadCpuTimeEnabled(boolean)

getThreadCpuTime

long getThreadCpuTime(long id)
指定された ID のスレッドの合計 CPU 時間 (ナノ秒単位) を返します。戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。実装がユーザーモード時とシステムモード時を区別する場合、返される CPU 時間は、ユーザーモードまたはシステムモードでそのスレッドが実行した時間の合計です。

指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは -1 を返します。CPU 時間測定が無効の場合、このメソッドは -1 を返します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

スレッドが起動されたあとに CPU 時間測定が有効になった場合、Java 仮想マシンの実装では、CPU 時間測定が起動されたポイントとして CPU 時間測定機能が有効になった時間以前の任意の時間を選択できます。

パラメータ:
id - スレッドのスレッド ID
戻り値:
指定された ID のスレッドが存在し、 生存していて、CPU 時間測定が有効な場合は、 指定された ID のスレッドの合計 CPU 時間。 そうでない場合は -1
例外:
IllegalArgumentException - id <= 0 の場合
UnsupportedOperationException - Java 仮想マシンが ほかのスレッドの CPU 時間測定を サポートしない場合
関連項目:
getThreadUserTime(long), isThreadCpuTimeSupported(), isThreadCpuTimeEnabled(), setThreadCpuTimeEnabled(boolean)

getThreadUserTime

long getThreadUserTime(long id)
指定された ID のスレッドがユーザーモードで実行した CPU 時間 (ナノ秒単位) を返します。戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。

指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは -1 を返します。CPU 時間測定が無効の場合、このメソッドは -1 を返します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

スレッドが起動されたあとに CPU 時間測定が有効になった場合、Java 仮想マシンの実装では、CPU 時間測定が起動されたポイントとして CPU 時間測定機能が有効になった時間以前の任意の時間を選択できます。

パラメータ:
id - スレッドのスレッド ID
戻り値:
指定された ID のスレッドが存在し、 生存していて、CPU 時間測定が有効な場合は、 指定された ID のスレッドのユーザーレベルの CPU 時間。 そうでない場合は -1
例外:
IllegalArgumentException - id <= 0 の場合
UnsupportedOperationException - Java 仮想マシンが ほかのスレッドの CPU 時間測定を サポートしない場合
関連項目:
getThreadCpuTime(long), isThreadCpuTimeSupported(), isThreadCpuTimeEnabled(), setThreadCpuTimeEnabled(boolean)

isThreadCpuTimeSupported

boolean isThreadCpuTimeSupported()
Java 仮想マシンの実装が任意のスレッドの CPU 時間測定をサポートするかどうかをテストします。任意のスレッドの CPU 時間測定をサポートする Java 仮想マシンの実装は現在のスレッドの CPU 時間測定もサポートします。

戻り値:
Java 仮想 マシンが任意のスレッドの CPU 時間測定をサポートする場合は、true。 そうでない場合は false

isCurrentThreadCpuTimeSupported

boolean isCurrentThreadCpuTimeSupported()
Java 仮想マシンが現在のスレッドの CPU 時間測定をサポートするかどうかをテストします。isThreadCpuTimeSupported()true を返す場合、このメソッドは true を返します。

戻り値:
Java 仮想 マシンが現在のスレッドの CPU 時間測定をサポートする場合は、true。 そうでない場合は false

isThreadCpuTimeEnabled

boolean isThreadCpuTimeEnabled()
スレッドの CPU 時間測定が有効かどうかをテストします。

戻り値:
スレッドの CPU 時間測定が有効な場合は true、 そうでない場合は false
例外:
UnsupportedOperationException - Java 仮想マシンが ほかのスレッドばかりでなく現在のスレッドの CPU 時間測定も サポートしない場合
関連項目:
isThreadCpuTimeSupported(), isCurrentThreadCpuTimeSupported()

setThreadCpuTimeEnabled

void setThreadCpuTimeEnabled(boolean enable)
スレッドの CPU 時間測定を有効または無効にします。デフォルトの設定はプラットフォームに応じて異なります。

パラメータ:
enable - 有効にする場合は true、 無効にする場合は false
例外:
UnsupportedOperationException - Java 仮想マシンが 任意のスレッドばかりでなく現在のスレッドの CPU 時間測定もサポートしない場合
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合
関連項目:
isThreadCpuTimeSupported(), isCurrentThreadCpuTimeSupported()

findMonitorDeadlockedThreads

long[] findMonitorDeadlockedThreads()
オブジェクトモニターの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。つまり、スレッドはブロックされ、同期ブロックに入るのを待機しているか、Object.wait 呼び出しのあと、同期ブロックに再入するのを待機しています。 ここでは、サイクル中の別のスレッドにより保持されている別のモニターの取得を試行している間、各スレッドは 1 つのモニターを保有しています。

公式には、スレッドが、「ほかのスレッドにより保有されるオブジェクトモニターを待機している」関係にあるサイクルの一部である場合、スレッドは「モニターデッドロック」されます。もっとも簡単なケースについて説明すると、スレッド A は、スレッド B が所有するモニターを待機するのをブロックされ、スレッド B はスレッド A が所有するモニターを待機するのをブロックされます。

このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。

このメソッドは、オブジェクトモニターに関するデッドロックだけを検索します。オブジェクトモニターと所有可能なシンクロナイザの両方に関するデッドロックを検索するには、findDeadlockedThreads メソッドを使用するようにしてください。

戻り値:
モニターデッドロックされているスレッドの ID の配列。 そうでない場合は null
例外:
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合
関連項目:
findDeadlockedThreads()

resetPeakThreadCount

void resetPeakThreadCount()
ピークスレッドカウントをライブスレッドの現在の数にリセットします。

例外:
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合
関連項目:
getPeakThreadCount(), getThreadCount()

findDeadlockedThreads

long[] findDeadlockedThreads()
オブジェクトモニターまたは所有可能なシンクロナイザの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。 これら 2 種類のロックを待機しているサイクル中に、各スレッドがロックを所有していて、このサイクルのほかのスレッドによってすでに保持されている別のロックを取得しようとすると、スレッドはデッドロック状態になります。

このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。

戻り値:
オブジェクトモニターまたは所有可能なシンクロナイザがある場合に、 それらを待機していてデッドロックされているスレッドの ID の配列。 そうでない場合は null
例外:
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合
UnsupportedOperationException - Java 仮想マシンが 所有可能なシンクロナイザの使用量の監視をサポートしない場合
導入されたバージョン:
1.6
関連項目:
isSynchronizerUsageSupported(), findMonitorDeadlockedThreads()

isObjectMonitorUsageSupported

boolean isObjectMonitorUsageSupported()
Java 仮想マシンがオブジェクトモニターの使用量の監視をサポートするかどうかをテストします。

戻り値:
Java 仮想 マシンがオブジェクトモニターの使用量の監視を サポートしている場合は true、 そうでない場合は false
導入されたバージョン:
1.6
関連項目:
dumpAllThreads(boolean, boolean)

isSynchronizerUsageSupported

boolean isSynchronizerUsageSupported()
Java 仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートするかどうかをテストします。

戻り値:
Java 仮想 マシンが所有可能なシンクロナイザの使用量の監視を サポートしている場合は true、 そうでない場合は false
導入されたバージョン:
1.6
関連項目:
dumpAllThreads(boolean, boolean)

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids,
                           boolean lockedMonitors,
                           boolean lockedSynchronizers)
スタックトレースおよび同期情報を持つ入力配列 ids にある ID を持つスレッドごとのスレッド情報を返します。

このメソッドは、スレッドごとにスレッド情報のスナップショットを取得します。たとえば次のとおりです。

このメソッドは、ThreadInfo オブジェクトの配列を返します。 配列の各要素は、ids 配列と同じインデックスを持つスレッドに関するスレッド情報です。指定された ID のスレッドが生存していないか、存在しない場合、返される配列の対応する要素に null が設定されます。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

スレッドがオブジェクトモニターをロックしていない場合、または lockedMonitorsfalse の場合、返される ThreadInfo オブジェクトは空の MonitorInfo 配列を持ちます。同様に、スレッドがシンクロナイザをロックしていない場合、または lockedSynchronizersfalse の場合、返される ThreadInfo オブジェクトは空の LockInfo 配列を持ちます。

lockedMonitors パラメータおよび lockedSynchronizers パラメータの両方が false の場合は、次を呼び出すことに相当します。

     getThreadInfo(ids, Integer.MAX_VALUE)
 

このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。

MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from メソッドで指定された属性を持つ CompositeData です。

パラメータ:
ids - スレッド ID の配列
lockedMonitors - true の場合、ロックされたすべてのモニターを取得する
lockedSynchronizers - true の場合、ロックされたすべての 所有可能なシンクロナイザを取得する
戻り値:
ID の入力配列の対応する要素に ID があるスレッドの情報を含む ThreadInfo オブジェクトの配列
例外:
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合
UnsupportedOperationException -
  • lockedMonitorstrue だが Java 仮想マシンが object monitor usage の監視を サポートしない場合、または
  • lockedSynchronizerstrue だが Java 仮想マシンが ownable synchronizer usage の監視を サポートしない場合
導入されたバージョン:
1.6
関連項目:
isObjectMonitorUsageSupported(), isSynchronizerUsageSupported()

dumpAllThreads

ThreadInfo[] dumpAllThreads(boolean lockedMonitors,
                            boolean lockedSynchronizers)
スタックトレースおよび同期情報を持つすべてのライブスレッドのスレッド情報を返します。返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。

このメソッドは、getThreadInfo(long[], boolean, boolean) メソッドで指定された ThreadInfo オブジェクトの配列を返します。

パラメータ:
lockedMonitors - true の場合、ロックされたすべてのモニターをダンプする
lockedSynchronizers - true の場合、ロックされたすべての 所有可能なシンクロナイザをダンプする
戻り値:
すべてのライブスレッドの ThreadInfo の配列
例外:
SecurityException - セキュリティーマネージャーが存在し、 呼び出し元が ManagementPermission("control") を 持たない場合
UnsupportedOperationException -
  • lockedMonitorstrue だが Java 仮想マシンが object monitor usage の監視を サポートしない場合、または
  • lockedSynchronizerstrue だが Java 仮想マシンが ownable synchronizer usage の監視を サポートしない場合
導入されたバージョン:
1.6
関連項目:
isObjectMonitorUsageSupported(), isSynchronizerUsageSupported()

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。