public class ThreadInfo extends Object
ThreadInfoには、スレッドに関する次の情報があります。
一般的なスレッド情報
- スレッドID
- スレッドの名前
- スレッドがデーモン・スレッドかどうか
実行情報
- スレッドの状態。
- 次の理由でスレッドがブロックされたオブジェクト。
- 同期ブロックまたはメソッドに入るために待機していた、または
- 通知を受けるために
Object.waitメソッドで待機していた、または LockSupport.park呼出しにより、parkが行われた。
- スレッドがブロックされているオブジェクトを所有しているスレッドのID
- スレッドのスタック・トレース
- スレッドによってロックされたオブジェクト・モニターのリスト。
- スレッドによってロックされた所有可能なシンクロナイザのリスト。
- スレッドの優先順位
同期の統計情報
- スレッドが同期をブロックした、または通知を待機した回数
スレッド・コンテンション監視が有効になってから、スレッドが同期をブロックした、または通知を待機した累積経過時間。 一部のJava仮想マシンの実装は、この機能をサポートしていない可能性がある。ThreadMXBean.isThreadContentionMonitoringSupported()メソッドを使って、Java仮想マシンがこれをサポートしているかどうかを判定できます。
このスレッド情報クラスは、同期制御用ではなく、システムの監視に使用されるよう設計されています。
MXBeanのマッピング
ThreadInfoは、fromメソッドで指定された属性を持つCompositeDataにマッピングされます。- 導入されたバージョン:
- 1.5
- 関連項目:
ThreadMXBean.getThreadInfo(long),ThreadMXBean.dumpAllThreads(boolean, boolean)
-
メソッドのサマリー
修飾子と型 メソッド 説明 static ThreadInfofrom(CompositeData cd)指定されたCompositeDataによって表されるThreadInfoオブジェクトを返します。longgetBlockedCount()このThreadInfoに関連するスレッドが、モニターに入るか、再入するのをブロックした合計回数を返します。longgetBlockedTime()スレッド・コンテンション監視が有効になってから、このThreadInfoに関連するスレッドがモニターに入るか再入するのをブロックしたおよその累積経過時間(ミリ秒単位)を返します。MonitorInfo[]getLockedMonitors()MonitorInfoオブジェクトの配列を返します。各オブジェクトは、このThreadInfoに関連するスレッドによって現在ロックされているオブジェクト・モニターを表します。LockInfo[]getLockedSynchronizers()LockInfoオブジェクトの配列を返します。各オブジェクトは、このThreadInfoに関連するスレッドによって現在ロックされている所有可能なシンクロナイザを表します。LockInfogetLockInfo()このThreadInfoに関連するスレッドが待機するのをブロックされるオブジェクトのLockInfoを返します。StringgetLockName()このThreadInfoに関連するスレッドが待機するのをブロックされるオブジェクトの文字列表現を返します。longgetLockOwnerId()このThreadInfoに関連するスレッドが待機するのをブロックされているオブジェクトについて、そのオブジェクトを所有するスレッドのIDを返します。StringgetLockOwnerName()このThreadInfoに関連するスレッドが待機するのをブロックされているオブジェクトについて、そのオブジェクトを所有するスレッドの名前を返します。intgetPriority()このThreadInfoに関連付けられたスレッドの「スレッドの優先順位」を返します。StackTraceElement[]getStackTrace()このThreadInfoに関連するスレッドのスタック・トレースを返します。longgetThreadId()このThreadInfoに関連するスレッドのIDを返します。StringgetThreadName()このThreadInfoに関連するスレッドの名前を返します。Thread.StategetThreadState()このThreadInfoに関連するスレッドの状態を返します。longgetWaitedCount()このThreadInfoに関連するスレッドが通知を待機した合計回数を返します。longgetWaitedTime()スレッド・コンテンション監視が有効になってから、このThreadInfoに関連するスレッドが通知を待機したおよその累積経過時間(ミリ秒単位)を返します。booleanisDaemon()このThreadInfoに関連付けられたスレッドが「デーモン・スレッド」かどうかをテストします。booleanisInNative()このThreadInfoに関連するスレッドが、JNI (Java Native Interface)を使ってネイティブ・コードを実行しているかどうかをテストします。booleanisSuspended()このThreadInfoに関連するスレッドが中断されているかどうかをテストします。StringtoString()このスレッド情報の文字列表現を返します。
-
メソッドの詳細
-
getThreadId
public long getThreadId()このThreadInfoに関連するスレッドのIDを返します。- 戻り値:
- 関連するスレッドのID
-
getThreadName
public String getThreadName()このThreadInfoに関連するスレッドの名前を返します。- 戻り値:
- 関連するスレッドの名前
-
getThreadState
public Thread.State getThreadState()このThreadInfoに関連するスレッドの状態を返します。- 戻り値:
- 関連するスレッドの
Thread.State。
-
getBlockedTime
public long getBlockedTime()スレッド・コンテンション監視が有効になってから、このThreadInfoに関連するスレッドがモニターに入るか再入するのをブロックしたおよその累積経過時間(ミリ秒単位)を返します。 つまり、この時間は、スレッド・コンテンション監視が最後に有効になってからスレッドがBLOCKED状態になっていた合計の累積時間です。 スレッド・コンテンション監視が無効の場合、このスレッドは-1を返します。Java仮想マシンは高精度タイマーを使って計測できます。 この統計情報は、スレッド・コンテンション監視が再び有効になるとリセットされます。
- 戻り値:
- スレッドが
BLOCKED状態に入ったおよその累積経過時間(ミリ秒単位)。スレッド・コンテンション監視が無効の場合は-1。 - 例外:
UnsupportedOperationException- Java仮想マシンがこの操作をサポートしていない場合。- 関連項目:
ThreadMXBean.isThreadContentionMonitoringSupported(),ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
-
getBlockedCount
public long getBlockedCount()このThreadInfoに関連するスレッドが、モニターに入るか、再入するのをブロックした合計回数を返します。 つまり、スレッドがBLOCKED状態であった合計回数です。- 戻り値:
- スレッドが
BLOCKED状態に入った合計回数。
-
getWaitedTime
public long getWaitedTime()スレッド・コンテンション監視が有効になってから、このThreadInfoに関連するスレッドが通知を待機したおよその累積経過時間(ミリ秒単位)を返します。 つまり、この時間は、スレッド・コンテンション監視が有効になってから、スレッドがWAITINGまたはTIMED_WAITING状態であった合計の累積時間です。 スレッド・コンテンション監視が無効の場合、このスレッドは-1を返します。Java仮想マシンは高精度タイマーを使って計測できます。 この統計情報は、スレッド・コンテンション監視が再び有効になるとリセットされます。
- 戻り値:
- スレッドが
WAITINGまたはTIMED_WAITING状態であったおよその累積経過時間(ミリ秒単位)。スレッド・コンテンション監視が無効の場合は-1。 - 例外:
UnsupportedOperationException- Java仮想マシンがこの操作をサポートしていない場合。- 関連項目:
ThreadMXBean.isThreadContentionMonitoringSupported(),ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
-
getWaitedCount
public long getWaitedCount()このThreadInfoに関連するスレッドが通知を待機した合計回数を返します。 つまり、スレッドがWAITINGまたはTIMED_WAITING状態にあった合計回数です。- 戻り値:
- スレッドが
WAITINGまたはTIMED_WAITING状態であった合計回数。
-
getLockInfo
public LockInfo getLockInfo()このThreadInfoに関連するスレッドが待機するのをブロックされるオブジェクトのLockInfoを返します。 スレッドは次のいずれかの待機がブロックされることがあります。- 同期ブロックまたはメソッドに入るまたは再入するために取得されるオブジェクト・モニター。
スレッドは、synchronized文またはメソッドに入るために待機しているBLOCKED状態である。 - 別のスレッドによって通知を受けるオブジェクト・モニター。
Object.waitメソッドが呼び出されたため、スレッドはWAITINGまたはTIMED_WAITINGの状態になっています。 - スレッドのparkを行う同期オブジェクト。
LockSupport.parkメソッドが呼び出されたため、スレッドはWAITINGまたはTIMED_WAITINGの状態になっています。 同期オブジェクトとは、LockSupport.getBlockerメソッドで返されるオブジェクトである。 通常は、所有可能なシンクロナイザまたはConditionである。
スレッドが上記のいずれの状態でもない場合、このメソッドは
nullを返します。- 戻り値:
- スレッドが待機をブロックされているオブジェクトがある場合はそのオブジェクトの
LockInfo、そうでない場合はnull。 - 導入されたバージョン:
- 1.6
- 同期ブロックまたはメソッドに入るまたは再入するために取得されるオブジェクト・モニター。
-
getLockName
public String getLockName()このThreadInfoに関連するスレッドが待機するのをブロックされるオブジェクトの文字列表現を返します。 このメソッドは、次を呼び出すのと同等です。getLockInfo().toString()
このスレッドがどのオブジェクトの待機もブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、このメソッドは
nullを返します。- 戻り値:
- スレッドがブロックされている場合はそのオブジェクトの文字列表現、そうでない場合は
null。 - 関連項目:
getLockInfo()
-
getLockOwnerId
public long getLockOwnerId()このThreadInfoに関連するスレッドが待機するのをブロックされているオブジェクトについて、そのオブジェクトを所有するスレッドのIDを返します。 このスレッドがどのオブジェクトの待機もブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、このメソッドは-1を返します。- 戻り値:
- このスレッドがブロックされているオブジェクトを所有しているスレッドのスレッドID。このスレッドがブロックされていない場合、またはオブジェクトを所有するスレッドがない場合は
-1。 - 関連項目:
getLockInfo()
-
getLockOwnerName
public String getLockOwnerName()このThreadInfoに関連するスレッドが待機するのをブロックされているオブジェクトについて、そのオブジェクトを所有するスレッドの名前を返します。 このスレッドがどのオブジェクトの待機もブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、このメソッドはnullを返します。- 戻り値:
- このスレッドがブロックされているオブジェクトを所有しているスレッドの名前。このスレッドがブロックされていない場合、またはオブジェクトを所有するスレッドがない場合は
null。 - 関連項目:
getLockInfo()
-
getStackTrace
public StackTraceElement[] getStackTrace()このThreadInfoに関連するスレッドのスタック・トレースを返します。 このスレッド情報についてスタック・トレースが要求されなかった場合、このメソッドは長さゼロの配列を返します。 返された配列がゼロ以外の長さの配列である場合、配列の最初の要素はスタックの最上部を表します。これはシーケンスで呼び出されたもっとも新しいメソッドです。 配列の最後の要素は、スタックの底部を表します。これはシーケンスで呼び出されたもっとも古いメソッドです。Java仮想マシンの中には、特定の状況下でスタック・トレースから1つ以上のスタック・フレームを省略するものがあります。 極端な場合、この
ThreadInfoに関連するスレッドのスタック・トレース情報を保持しない仮想マシンが、このメソッドから長さゼロの配列を返すことが許可されます。- 戻り値:
- スレッドの
StackTraceElementオブジェクトの配列。
-
isSuspended
public boolean isSuspended()このThreadInfoに関連するスレッドが中断されているかどうかをテストします。Thread.suspend()が呼び出されていた場合、このメソッドはtrueを返します。- 戻り値:
- このスレッドが中断されている場合は
true、そうでない場合はfalse。
-
isInNative
public boolean isInNative()このThreadInfoに関連するスレッドが、JNI (Java Native Interface)を使ってネイティブ・コードを実行しているかどうかをテストします。 JNIネイティブ・コードは、仮想マシン・サポート・コードや仮想マシンにより生成されたコンパイル済みネイティブ・コードを含みません。- 戻り値:
- このスレッドがネイティブ・コードを実行している場合は
true、そうでない場合はfalse。
-
isDaemon
public boolean isDaemon()このThreadInfoに関連付けられたスレッドが「デーモン・スレッド」かどうかをテストします。- 戻り値:
- スレッドがデーモン・スレッドの場合は
true、それ以外の場合はfalse。 - 導入されたバージョン:
- 9
- 関連項目:
Thread.isDaemon()
-
getPriority
public int getPriority()このThreadInfoに関連付けられたスレッドの「スレッドの優先順位」を返します。- 戻り値:
- この
ThreadInfoに関連付けられたスレッドの優先順位。 - 導入されたバージョン:
- 9
-
toString
public String toString() -
from
public static ThreadInfo from(CompositeData cd)指定されたCompositeDataによって表されるThreadInfoオブジェクトを返します。 バージョンNのCompositeDataを表すCompositeDataは、バージョン≤ Nで定義されるすべての属性を、それ以外で指定しないかぎり、含む必要があります。 同じルールでは、typeまたは「コンポーネント・タイプ」がCompositeTypeである属性に、指定されたCompositeDataのコンポジット・タイプが適用され、そのコンポジット・タイプに一時的に適用されます。ThreadInfoを表すThreadInfoでありNには、"stackTrace"属性と"lockedMonitors"の配列を表すStackTraceElementの配列とMonitorInfoの配列をそれぞれ表し、それらの型はNです。MonitorInfo複合タイプの"lockedStackFrame"属性は、同じバージョンNのStackTraceElementを表している必要があります。 それ以外の場合、このメソッドはIllegalArgumentExceptionをスローします。
バージョンNの「属性名 型 導入されたバージョン threadId java.lang.Long5 threadName java.lang.String5 threadState java.lang.String5 suspended java.lang.Boolean5 inNative java.lang.Boolean5 blockedCount java.lang.Long5 blockedTime java.lang.Long5 waitedCount java.lang.Long5 waitedTime java.lang.Long5 lockName java.lang.String5 lockOwnerId java.lang.Long5 lockOwnerName java.lang.String5 stackTrace javax.management.openmbean.CompositeData[]が指定されたbelowと同じStackTraceElementを表すCompositeDataです。5 lockInfo javax.management.openmbean.CompositeData-LockInfo.from(javax.management.openmbean.CompositeData)メソッドで指定された、LockInfoのマップされた型。指定された
CompositeDataにこの属性が含まれていない場合は、lockName属性の値からLockInfoオブジェクトが作成されます。6 lockedMonitors 要素タイプが MonitorInfo.fromメソッドで指定されたMonitorInfoのマップされた型であるjavax.management.openmbean.CompositeData[]。指定された
CompositeDataにこの属性が含まれていない場合、この属性は空の配列に設定されます。6 lockedSynchronizers 要素型が LockInfoのマップされた型であるjavax.management.openmbean.CompositeData[]。この型はLockInfo.from(javax.management.openmbean.CompositeData)メソッドで指定されます。指定された
CompositeDataにこの属性が含まれていない場合、この属性は空の配列に設定されます。6 daemon java.lang.Boolean指定された
CompositeDataにこの属性が含まれていない場合、この属性はfalseに設定されます。9 priority java.lang.Integer指定された
CompositeDataにこの属性が含まれていない場合、この属性はThread.NORM_PRIORITYに設定されます。9 StackTraceElementを表すCompositeData」は、バージョン≤ Nで定義されているすべての属性が含まれている必要があります(特に指定されていない場合)。属性名 型 導入されたバージョン classLoaderName java.lang.String9 moduleName java.lang.String9 moduleVersion java.lang.String9 className java.lang.String5 methodName java.lang.String5 fileName java.lang.String5 lineNumber java.lang.Integer5 nativeMethod java.lang.Boolean5 - パラメータ:
cd-ThreadInfoを表すCompositeData- 戻り値:
cdがnullでない場合はcdにより表されるThreadInfoオブジェクト、そうでない場合はnull。- 例外:
IllegalArgumentException- 指定されたcdが指定されている場合、特定の実行時バージョンのThreadInfoに対して定義された「属性」が含まれていないと、そのコンポジット型には、特定のランタイム・バージョンが含まれます。
-
getLockedMonitors
public MonitorInfo[] getLockedMonitors()MonitorInfoオブジェクトの配列を返します。各オブジェクトは、このThreadInfoに関連するスレッドによって現在ロックされているオブジェクト・モニターを表します。 このスレッド情報についてロックされたモニターが要求されなかった場合、またはスレッドによってロックされたモニターがない場合、このメソッドは長さゼロの配列を返します。- 戻り値:
- スレッドによってロックされたオブジェクト・モニターを表す
MonitorInfoオブジェクトの配列。 - 導入されたバージョン:
- 1.6
-
getLockedSynchronizers
public LockInfo[] getLockedSynchronizers()LockInfoオブジェクトの配列を返します。各オブジェクトは、このThreadInfoに関連するスレッドによって現在ロックされている所有可能なシンクロナイザを表します。 このスレッド情報についてロックされたシンクロナイザが要求されなかった場合、またはスレッドによってロックされたシンクロナイザがない場合、このメソッドは長さゼロの配列を返します。- 戻り値:
- スレッドによってロックされた所有可能なシンクロナイザを表す
LockInfoオブジェクトの配列。 - 導入されたバージョン:
- 1.6
-