- java.lang.Object
-
- java.lang.management.ThreadInfo
-
public class ThreadInfo extends Object
スレッド情報です。ThreadInfo
には、スレッドに関する次の情報があります。一般的なスレッド情報
- スレッドID
- スレッドの名前
- スレッドがデーモン・スレッドかどうか
実行情報
- スレッドの状態。
- 次の理由でスレッドがブロックされたオブジェクト。
- 同期ブロックまたはメソッドに入るために待機していた、または
- 通知を受けるために
Object.wait
メソッドで待機していた、または LockSupport.park
呼出しにより、parkが行われた。
- スレッドがブロックされているオブジェクトを所有しているスレッドのID
- スレッドのスタック・トレース
- スレッドによってロックされたオブジェクト・モニターのリスト。
- スレッドによってロックされた所有可能なシンクロナイザのリスト。
- スレッドの優先順位
Synchronization Statistics
- スレッドが同期をブロックした、または通知を待機した回数
スレッド・コンテンション監視
が有効になってから、スレッドが同期をブロックした、または通知を待機した累積経過時間。 一部のJava仮想マシンの実装は、この機能をサポートしていない可能性がある。ThreadMXBean.isThreadContentionMonitoringSupported()
メソッドを使って、Java仮想マシンがこれをサポートしているかどうかを判定できます。
このスレッド情報クラスは、同期制御用ではなく、システムの監視に使用されるよう設計されています。
MXBean Mapping
ThreadInfo
は、from
メソッドで指定された属性を持つCompositeData
にマッピングされます。- 導入されたバージョン:
- 1.5
- 関連項目:
ThreadMXBean.getThreadInfo(long)
,ThreadMXBean.dumpAllThreads(boolean, boolean)
-
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 static ThreadInfo
from(CompositeData cd)
指定されたCompositeData
によって表されるThreadInfo
オブジェクトを返します。long
getBlockedCount()
このThreadInfo
に関連するスレッドが、モニターに入るか、再入するのをブロックした合計回数を返します。long
getBlockedTime()
スレッド・コンテンション監視が有効になってから、このThreadInfo
に関連するスレッドがモニターに入るか再入するのをブロックしたおよその累積経過時間(ミリ秒単位)を返します。MonitorInfo[]
getLockedMonitors()
MonitorInfo
オブジェクトの配列を返します。各オブジェクトは、このThreadInfo
に関連するスレッドによって現在ロックされているオブジェクト・モニターを表します。LockInfo[]
getLockedSynchronizers()
LockInfo
オブジェクトの配列を返します。各オブジェクトは、このThreadInfo
に関連するスレッドによって現在ロックされている所有可能なシンクロナイザを表します。LockInfo
getLockInfo()
このThreadInfo
に関連するスレッドが待機するのをブロックされるオブジェクトのLockInfo
を返します。String
getLockName()
このThreadInfo
に関連するスレッドが待機するのをブロックされるオブジェクトの文字列表現
を返します。long
getLockOwnerId()
このThreadInfo
に関連するスレッドが待機するのをブロックされているオブジェクトについて、そのオブジェクトを所有するスレッドのIDを返します。String
getLockOwnerName()
このThreadInfo
に関連するスレッドが待機するのをブロックされているオブジェクトについて、そのオブジェクトを所有するスレッドの名前を返します。int
getPriority()
このThreadInfo
に関連付けられたスレッドの「スレッドの優先順位」を返します。StackTraceElement[]
getStackTrace()
このThreadInfo
に関連するスレッドのスタック・トレースを返します。long
getThreadId()
このThreadInfo
に関連するスレッドのIDを返します。String
getThreadName()
このThreadInfo
に関連するスレッドの名前を返します。Thread.State
getThreadState()
このThreadInfo
に関連するスレッドの状態を返します。long
getWaitedCount()
このThreadInfo
に関連するスレッドが通知を待機した合計回数を返します。long
getWaitedTime()
スレッド・コンテンション監視が有効になってから、このThreadInfo
に関連するスレッドが通知を待機したおよその累積経過時間(ミリ秒単位)を返します。boolean
isDaemon()
このThreadInfo
に関連付けられたスレッドが「デーモン・スレッド」かどうかをテストします。boolean
isInNative()
このThreadInfo
に関連するスレッドが、JNI (Java Native Interface)を使ってネイティブ・コードを実行しているかどうかをテストします。boolean
isSuspended()
このThreadInfo
に関連するスレッドが中断されているかどうかをテストします。String
toString()
このスレッド情報の文字列表現を返します。
-
-
-
メソッドの詳細
-
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
-
from
public static ThreadInfo from(CompositeData cd)
指定されたCompositeData
によって表されるThreadInfo
オブジェクトを返します。 特に断りがないかぎり、指定されたCompositeData
は、次の属性を含む必要があります。属性名 型 threadId java.lang.Long
threadName java.lang.String
threadState java.lang.String
suspended java.lang.Boolean
inNative java.lang.Boolean
blockedCount java.lang.Long
blockedTime java.lang.Long
waitedCount java.lang.Long
waitedTime java.lang.Long
lockInfo javax.management.openmbean.CompositeData
-LockInfo.from(javax.management.openmbean.CompositeData)
メソッドで指定された、LockInfo
のマップされた型。cd
にこの属性が含まれない場合、LockInfo
オブジェクトはlockName
属性の値から構築されます。lockName java.lang.String
lockOwnerId java.lang.Long
lockOwnerName java.lang.String
stackTrace javax.management.openmbean.CompositeData[]
各要素は、次の属性を含むStackTraceElementを表す
CompositeData
属性名 型 moduleName java.lang.String
moduleVersion java.lang.String
className java.lang.String
methodName java.lang.String
fileName java.lang.String
lineNumber java.lang.Integer
nativeMethod java.lang.Boolean
lockedMonitors 要素型が MonitorInfo
のマップされた型であるjavax.management.openmbean.CompositeData[]
。この型はMonitor.from
メソッドで指定されます。cd
にこの属性が含まれない場合、この属性は空の配列に設定されます。lockedSynchronizers 要素型が LockInfo
のマップされた型であるjavax.management.openmbean.CompositeData[]
。この型はLockInfo.from(javax.management.openmbean.CompositeData)
メソッドで指定されます。cd
にこの属性が含まれない場合、この属性は空の配列に設定されます。daemon java.lang.Boolean
priority java.lang.Integer
- パラメータ:
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
-
-