|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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)
メソッドを使って、スレッドコンテンション監視を有効にすることができます。
getThreadInfo(long[], boolean, boolean)
メソッドと dumpAllThreads(boolean, boolean)
メソッドを使用すると、スレッドスタックトレースおよび同期情報 (スレッドが取得をブロックされているまたは待機している lock について、スレッドが現在所有しているロックについてなど) を取得できます。
ThreadMXBean インタフェースは、実行中アプリケーションのデッドロックを見つけるための findMonitorDeadlockedThreads()
メソッドおよび findDeadlockedThreads()
メソッドを提供します。
メソッドの概要 | |
---|---|
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 時間測定を有効または無効にします。 |
メソッドの詳細 |
---|
int getThreadCount()
int getPeakThreadCount()
long getTotalStartedThreadCount()
int getDaemonThreadCount()
long[] getAllThreadIds()
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo getThreadInfo(long id)
getThreadInfo(id, 0);
このメソッドは、指定された ID のスレッドに関するスレッド情報を表す ThreadInfo オブジェクトを返します。返された ThreadInfo オブジェクトのスタックトレース、ロックされたモニター、およびロックされたシンクロナイザは、空になります。 指定された ID のスレッドが生存していないか、存在していない場合、このメソッドは null を返します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。
MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from
メソッドで指定された属性を持つ CompositeData です。
id
- スレッドのスレッド ID。正の値でなければならない
ThreadInfo
オブジェクト。指定された ID のスレッドが生存または存在していない場合は null
IllegalArgumentException
- id <= 0 の場合
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo[] getThreadInfo(long[] ids)
getThreadInfo
(ids, 0);
このメソッドは、ThreadInfo オブジェクトの配列を返します。各 ThreadInfo オブジェクトのスタックトレース、ロックされたモニター、およびロックされたシンクロナイザは、空になります。 指定された ID のスレッドが生存していないか、存在していない場合、返された配列の対応する要素は、null を含みます。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。
MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from
メソッドで指定された属性を持つ CompositeData です。
ids
- スレッド ID の配列
ThreadInfo
オブジェクトの配列
IllegalArgumentException
- 入力配列 ids の要素が <= 0 である場合
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo getThreadInfo(long id, int 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 を使って、スタック全体をダンプするよう要求できる
ThreadInfo
。指定された ID のスレッドが生存または存在していない場合は null
IllegalArgumentException
- id <= 0 の場合
IllegalArgumentException
- maxDepth is negative の場合
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合ThreadInfo[] getThreadInfo(long[] ids, int 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 を使って、スタック全体をダンプするよう要求できる
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 が所有するモニターを待機するのをブロックされます。
このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。
このメソッドは、オブジェクトモニターに関するデッドロックだけを検索します。オブジェクトモニターと所有可能なシンクロナイザの両方に関するデッドロックを検索するには、findDeadlockedThreads
メソッドを使用するようにしてください。
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合findDeadlockedThreads()
void resetPeakThreadCount()
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("control") を持たない場合getPeakThreadCount()
,
getThreadCount()
long[] findDeadlockedThreads()
このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合
UnsupportedOperationException
- Java 仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートしない場合isSynchronizerUsageSupported()
,
findMonitorDeadlockedThreads()
boolean isObjectMonitorUsageSupported()
dumpAllThreads(boolean, boolean)
boolean isSynchronizerUsageSupported()
dumpAllThreads(boolean, boolean)
ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
このメソッドは、スレッドごとにスレッド情報のスナップショットを取得します。たとえば次のとおりです。
このメソッドは、ThreadInfo オブジェクトの配列を返します。 配列の各要素は、ids 配列と同じインデックスを持つスレッドに関するスレッド情報です。指定された ID のスレッドが生存していないか、存在しない場合、返される配列の対応する要素に null が設定されます。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。
スレッドがオブジェクトモニターをロックしていない場合、または lockedMonitors が false の場合、返される ThreadInfo オブジェクトは空の MonitorInfo 配列を持ちます。同様に、スレッドがシンクロナイザをロックしていない場合、または lockedSynchronizers が false の場合、返される ThreadInfo オブジェクトは空の LockInfo 配列を持ちます。
lockedMonitors パラメータおよび lockedSynchronizers パラメータの両方が false の場合は、次を呼び出すことに相当します。
getThreadInfo(ids, Integer.MAX_VALUE)
このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。
MBeanServer アクセス:ThreadInfo のマップ型は、ThreadInfo.from
メソッドで指定された属性を持つ CompositeData です。
ids
- スレッド ID の配列lockedMonitors
- true の場合、ロックされたすべてのモニターを取得するlockedSynchronizers
- true の場合、ロックされたすべての所有可能なシンクロナイザを取得する
ThreadInfo
オブジェクトの配列
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合
UnsupportedOperationException
- isObjectMonitorUsageSupported()
,
isSynchronizerUsageSupported()
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
このメソッドは、getThreadInfo(long[], boolean, boolean)
メソッドで指定された ThreadInfo
オブジェクトの配列を返します。
lockedMonitors
- true の場合、ロックされたすべてのモニターをダンプするlockedSynchronizers
- true の場合、ロックされたすべての所有可能なシンクロナイザをダンプする
ThreadInfo
の配列
SecurityException
- セキュリティーマネージャーが存在する場合で、呼び出し元が ManagementPermission("monitor") を持たない場合
UnsupportedOperationException
- isObjectMonitorUsageSupported()
,
isSynchronizerUsageSupported()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。