モジュール java.management
パッケージ java.lang.management

クラスThreadInfo

java.lang.Object
java.lang.management.ThreadInfo

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 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()
    このスレッド情報の文字列表現を返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • メソッドの詳細

    • 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()
      このスレッド情報の文字列表現を返します。 この文字列の形式は実装に依存します。 通常、返される文字列にはスレッド名スレッドID、その状態、およびスタック・トレース (存在する場合)が含まれます。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このスレッド情報の文字列表現
    • from

      public static ThreadInfo from​(CompositeData cd)
      指定されたCompositeDataによって表されるThreadInfoオブジェクトを返します。 バージョンNCompositeDataを表すCompositeDataは、バージョン≤ Nで定義されるすべての属性を、それ以外で指定しないかぎり、含む必要があります。 同じルールでは、typeまたは「コンポーネント・タイプ」CompositeTypeである属性に、指定されたCompositeDataのコンポジット・タイプが適用され、そのコンポジット・タイプに一時的に適用されます。

      ThreadInfoを表すThreadInfoでありNには、"stackTrace"属性と"lockedMonitors"の配列を表すStackTraceElementの配列とMonitorInfoの配列をそれぞれ表し、それらの型はNです。 MonitorInfo複合タイプの"lockedStackFrame"属性は、同じバージョンNStackTraceElementを表している必要があります。 それ以外の場合、このメソッドはIllegalArgumentExceptionをスローします。

      ThreadInfoコンポジット・データ用の属性とそのタイプ
      属性名 導入されたバージョン
      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のマップされた型である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
      バージョンNStackTraceElementを表すCompositeDataは、バージョン≤ Nで定義されているすべての属性が含まれている必要があります(特に指定されていない場合)。
      StackTraceElementコンポジット・データ用の属性とそのタイプ
      属性名 導入されたバージョン
      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
      戻り値:
      cdnullでない場合はcdにより表されるThreadInfoオブジェクト、そうでない場合はnull
      例外:
      IllegalArgumentException - 指定されたcdが指定されている場合、特定の実行時バージョンのThreadInfoに対して定義された「属性」が含まれていないと、そのコンポジット型には、特定のランタイム・バージョンが含まれます。
    • getLockedMonitors

      public MonitorInfo[] getLockedMonitors()
      MonitorInfoオブジェクトの配列を返します。各オブジェクトは、このThreadInfoに関連するスレッドによって現在ロックされているオブジェクト・モニターを表します。 このスレッド情報についてロックされたモニターが要求されなかった場合、またはスレッドによってロックされたモニターがない場合、このメソッドは長さゼロの配列を返します。
      戻り値:
      スレッドによってロックされたオブジェクト・モニターを表すMonitorInfoオブジェクトの配列。
      導入されたバージョン:
      1.6
    • getLockedSynchronizers

      public LockInfo[] getLockedSynchronizers()
      LockInfoオブジェクトの配列を返します。各オブジェクトは、このThreadInfoに関連するスレッドによって現在ロックされている所有可能なシンクロナイザを表します。 このスレッド情報についてロックされたシンクロナイザが要求されなかった場合、またはスレッドによってロックされたシンクロナイザがない場合、このメソッドは長さゼロの配列を返します。
      戻り値:
      スレッドによってロックされた所有可能なシンクロナイザを表すLockInfoオブジェクトの配列。
      導入されたバージョン:
      1.6