ThreadInfo
には、次のようなスレッドに関する情報が含まれます:
一般的なスレッド情報
- スレッドID
- スレッドの名前
- スレッドがデーモン・スレッドかどうか
実行情報
- スレッドの状態。
- 次の理由でスレッドがブロックされたオブジェクト。
- 同期ブロックまたはメソッドに入るために待機していた、または
- 通知を受けるために
Object.wait
メソッドで待機していた、または LockSupport.park
呼出しにより、parkが行われた。
- スレッドがブロックされているオブジェクトを所有しているスレッドのID
- スレッドのスタック・トレース
- スレッドによってロックされたオブジェクト・モニターのリスト。
- スレッドによってロックされた所有可能なシンクロナイザのリスト。
- スレッドの優先順位
同期の統計情報
- スレッドが同期をブロックした、または通知を待機した回数
スレッド・コンテンション監視
が有効になってから、スレッドが同期をブロックした、または通知を待機した累積経過時間。 一部のJava仮想マシンの実装は、この機能をサポートしていない可能性がある。ThreadMXBean.isThreadContentionMonitoringSupported()
メソッドを使って、Java仮想マシンがこれをサポートしているかどうかを判定できます。
このスレッド情報クラスは、同期制御用ではなく、システムの監視に使用されるよう設計されています。
MXBeanのマッピング
ThreadInfo
は、from
メソッドで指定された属性を持つCompositeData
にマップされます。- 導入されたバージョン:
- 1.5
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明static ThreadInfo
from
(CompositeData cd) 指定されたCompositeData
で表されるThreadInfo
オブジェクトを返します。long
このThreadInfo
に関連付けられたスレッドがモニターへの入力または再入力をブロックした合計回数を返します。long
スレッド競合モニタリングが有効になっているため、このThreadInfo
に関連付けられたスレッドがモニターの入力または再入力をブロックした、累積経過時間の概算(ミリ秒)を返します。MonitorInfo
オブジェクトの配列を返します。各オブジェクトは、このThreadInfo
に関連付けられたスレッドによって現在ロックされているオブジェクト・モニターを表します。LockInfo[]
LockInfo
オブジェクトの配列を返します。各オブジェクトは、このThreadInfo
に関連付けられたスレッドによって現在ロックされている「所有可能なシンクロナイザ」を表します。このThreadInfo
に関連付けられたスレッドが待機中にブロックされているオブジェクトのLockInfo
を返します。このThreadInfo
に関連付けられたスレッドが待機中にブロックされているオブジェクトのstring representation
を返します。long
このThreadInfo
に関連付けられたスレッドが待機中にブロックされるオブジェクトを所有するスレッドのIDを返します。このThreadInfo
に関連付けられたスレッドが待機中にブロックされるオブジェクトを所有するスレッドの名前を返します。int
このThreadInfo
に関連付けられたスレッドの「スレッドの優先順位」を返します。このThreadInfo
に関連付けられたスレッドのスタック・トレースを返します。long
このThreadInfo
に関連付けられたスレッドのIDを返します。このThreadInfo
に関連付けられたスレッドの名前を返します。このThreadInfo
に関連付けられたスレッドの状態を返します。long
このThreadInfo
に関連付けられたスレッドが通知を待機した合計回数を返します。long
スレッド競合モニタリングが有効になっているため、このThreadInfo
に関連付けられたスレッドが通知を待機したおよその累積経過時間(ミリ秒)を返します。boolean
isDaemon()
このThreadInfo
に関連付けられたスレッドが「デーモン・スレッド」かどうかをテストします。boolean
このThreadInfo
に関連付けられたスレッドがネイティブ・コードを実行しているかどうかをテストします。boolean
このThreadInfo
に関連付けられたスレッドが一時停止されているかどうかをテストします。toString()
このスレッド情報の文字列表現を返します。
-
メソッドの詳細
-
getThreadId
public long getThreadId()このThreadInfo
に関連付けられたスレッドのIDを返します。- 戻り値:
- 関連するスレッドのID
-
getThreadName
-
getThreadState
public Thread.State getThreadState()このThreadInfo
に関連付けられたスレッドの状態を返します。- 戻り値:
- 関連付けられたスレッドの
Thread.State
。
-
getBlockedTime
public long getBlockedTime()スレッド競合モニタリングが有効になっているため、このThreadInfo
に関連付けられたスレッドがモニターの入力または再入力をブロックした、累積経過時間の概算(ミリ秒)を返します。 つまり、この時間は、スレッド・コンテンション監視が最後に有効になってからスレッドがBLOCKED
状態になっていた合計の累積時間です。 このメソッドは、スレッド競合のモニタリングが無効になっている場合は-1
を返します。Java仮想マシンは高精度タイマーを使って計測できます。 この統計は、スレッド競合モニタリングが再度有効にされたときにリセットされます。
- 戻り値:
- スレッドが
BLOCKED
状態に入ったおよその累積経過時間(ミリ秒)。スレッド競合のモニタリングが無効な場合は-1
。 - 例外:
UnsupportedOperationException
- Java仮想マシンがこの操作をサポートしていない場合。- 関連項目:
-
getBlockedCount
public long getBlockedCount()このThreadInfo
に関連付けられたスレッドがモニターへの入力または再入力をブロックした合計回数を返します。 つまり、スレッドがBLOCKED
状態であった合計回数です。- 戻り値:
- スレッドが
BLOCKED
状態に入った合計回数。
-
getWaitedTime
public long getWaitedTime()スレッド競合モニタリングが有効になっているため、このThreadInfo
に関連付けられたスレッドが通知を待機したおよその累積経過時間(ミリ秒)を返します。 つまり、この時間は、スレッド・コンテンション監視が有効になってから、スレッドがWAITING
またはTIMED_WAITING
状態であった合計の累積時間です。 このメソッドは、スレッド競合のモニタリングが無効になっている場合は-1
を返します。Java仮想マシンは高精度タイマーを使って計測できます。 この統計は、スレッド競合モニタリングが再度有効にされたときにリセットされます。
- 戻り値:
- スレッドが
WAITING
またはTIMED_WAITING
状態であったおよその累積経過時間(ミリ秒)。スレッド競合のモニタリングが無効な場合は-1
。 - 例外:
UnsupportedOperationException
- Java仮想マシンがこの操作をサポートしていない場合。- 関連項目:
-
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
に関連付けられたスレッドが待機中にブロックされているオブジェクトのstring representation
を返します。 このメソッドは、次を呼び出すのと同等です。getLockInfo().toString()
このメソッドは、オブジェクトの待機中にこのスレッドがブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、
null
を返します。- 戻り値:
- スレッドがブロックされているオブジェクト(ある場合)の文字列表現。それ以外の場合は
null
。 - 関連項目:
-
getLockOwnerId
public long getLockOwnerId()このThreadInfo
に関連付けられたスレッドが待機中にブロックされるオブジェクトを所有するスレッドのIDを返します。 このメソッドは、オブジェクトの待機中にこのスレッドがブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、-1
を返します。- 戻り値:
- このスレッドがブロックされているオブジェクトの所有者スレッドのスレッドID。このスレッドがブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、
-1
。 - 関連項目:
-
getLockOwnerName
public String getLockOwnerName()このThreadInfo
に関連付けられたスレッドが待機中にブロックされるオブジェクトを所有するスレッドの名前を返します。 このメソッドは、オブジェクトの待機中にこのスレッドがブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、null
を返します。- 戻り値:
- このスレッドがブロックされるオブジェクトを所有するスレッドの名前。このスレッドがブロックされていない場合、またはオブジェクトがスレッドによって所有されていない場合、
null
。 - 関連項目:
-
getStackTrace
public StackTraceElement[] getStackTrace()このThreadInfo
に関連付けられたスレッドのスタック・トレースを返します。 このスレッド情報についてスタック・トレースが要求されなかった場合、このメソッドは長さゼロの配列を返します。 返された配列がゼロ以外の長さの配列である場合、配列の最初の要素はスタックの最上部を表します。これはシーケンスで呼び出されたもっとも新しいメソッドです。 配列の最後の要素は、スタックの底部を表します。これはシーケンスで呼び出されたもっとも古いメソッドです。Java仮想マシンの中には、特定の状況下でスタック・トレースから1つ以上のスタック・フレームを省略するものがあります。 ストリームの場合、この
ThreadInfo
に関連付けられたスレッドに関するスタック・トレース情報がない仮想マシンは、このメソッドから長さゼロの配列を返すことができます。- 戻り値:
- スレッドの
StackTraceElement
オブジェクトの配列。
-
isSuspended
public boolean isSuspended()このThreadInfo
に関連付けられたスレッドが一時停止されているかどうかをテストします。 このメソッドは、Thread.suspend()
がコールされた場合にtrue
を返します。- 戻り値:
- スレッドが一時停止されている場合は
true
、それ以外の場合はfalse
。
-
isInNative
public boolean isInNative()このThreadInfo
に関連付けられたスレッドがネイティブ・コードを実行しているかどうかをテストします。スレッドは、ネイティブ・メソッドを実行しているとき、「ネイティブ・リンカー」から取得した「メソッド・ハンドル」RESTRICTEDを使用して起動されたネイティブ・コードを実行しているとき、またはスタック上にJavaフレームがないJava Native Interfaceを使用してVMに対して「添付済」を実行しているときに、ネイティブ・コードを実行しているとみなされます。
ネイティブ・コードには、Java仮想マシンのサポート・コード、Java仮想マシンによって生成されたコンパイル済コード、またはJVM TI raw monitorでブロックされたスレッドなどの特殊なケースは含まれません。
- 戻り値:
- スレッドがネイティブ・コードを実行している場合は
true
、それ以外の場合はfalse
。
-
isDaemon
public boolean isDaemon()このThreadInfo
に関連付けられたスレッドが「デーモン・スレッド」かどうかをテストします。- 戻り値:
- スレッドがデーモン・スレッドの場合は
true
、それ以外の場合はfalse
。 - 導入されたバージョン:
- 9
- 関連項目:
-
getPriority
public int getPriority()このThreadInfo
に関連付けられたスレッドの「スレッドの優先順位」を返します。- 戻り値:
- この
ThreadInfo
に関連付けられたスレッドの優先順位。 - 導入されたバージョン:
- 9
-
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
をスローします。属性名 型 導入されたバージョン threadId java.lang.Long
5 threadName java.lang.String
5 threadState java.lang.String
5 suspended java.lang.Boolean
5 inNative java.lang.Boolean
5 blockedCount java.lang.Long
5 blockedTime java.lang.Long
5 waitedCount java.lang.Long
5 waitedTime java.lang.Long
5 lockName java.lang.String
5 lockOwnerId java.lang.Long
5 lockOwnerName java.lang.String
5 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.from(javax.management.openmbean.CompositeData)
メソッドで指定されたLockInfo
のマップされた型である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.String
9 moduleName java.lang.String
9 moduleVersion java.lang.String
9 className java.lang.String
5 methodName java.lang.String
5 fileName java.lang.String
5 lineNumber java.lang.Integer
5 nativeMethod java.lang.Boolean
5 - パラメータ:
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
-