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

インタフェースThreadMXBean

すべてのスーパー・インタフェース:
PlatformManagedObject
既知のすべてのサブインタフェース:
ThreadMXBean

public interface ThreadMXBean extends PlatformManagedObject
Java仮想マシンのスレッド・システムの管理インタフェースです。

ThreadMXBeanは、Java仮想マシンでの「プラットフォーム・スレッド」のモニタリングおよび管理をサポートします。 プラットフォーム・スレッドは通常、オペレーティング・システムによってスケジュールされたカーネル・スレッドにマップされます。 ThreadMXBeanは、「仮想スレッド」のモニタリングまたは管理をサポートしていません。

Java仮想マシンは、このインタフェースの実装クラスの単一インスタンスを持ちます。 このインタフェースを実装するこのインスタンスは、ManagementFactory.getThreadMXBean()メソッドをコールするか、platform MBeanServerメソッドから取得できるMXBeanです。

MBeanServer内のスレッド・システムのMXBeanを一意に識別するためのObjectNameは、次のとおりです:

java.lang:type=Threading
これを取得するには、PlatformManagedObject.getObjectName()メソッドを呼び出します。

スレッドID

スレッドIDは、スレッドthreadId()メソッドをコールして戻される正のlong値です。 スレッドIDは一意であり、その寿命を通じて変更されることはありません。 スレッドが終了すると、そのスレッドIDが再使用される可能性があります。

このインタフェースの一部のメソッドは、入力パラメータとしてスレッドIDまたはスレッドIDの配列を取得してスレッドごとの情報を返します。

スレッドCPU時間

Java仮想マシン実装では、現在のプラットフォーム・スレッド、プラットフォーム・スレッド、スレッドなしのCPU時間の測定をサポートできます。

isThreadCpuTimeSupported()メソッドを使用すると、Java仮想マシンが任意のプラットフォーム・スレッドのCPU時間の測定をサポートするかどうかを判断できます。 isCurrentThreadCpuTimeSupported()メソッドを使用すると、Java仮想マシンがプラットフォーム・スレッドのgetCurrentThreadCpuTime()およびgetCurrentThreadUserTime()メソッドでCPU時間の測定をサポートするかどうかを判断できます。

このインタフェースで発生するCPU時間は、その単位の精度がナノ秒となっていますが、ここではこれほどの精度は要求されません。

Java仮想マシンでは、デフォルトでCPU時間の測定を無効にできます。 isThreadCpuTimeEnabled()およびsetThreadCpuTimeEnabled(boolean)メソッドを使って、CPU時間測定が有効になっているかどうかをテストしたり、測定のサポートを有効または無効にしたりすることができます。 スレッドCPU測定を有効にすると、一部のJava仮想マシンの実装では、負荷が大きくなる可能性があります。

スレッド・コンテンション監視

一部のJava仮想マシンは、スレッド・コンテンション監視をサポートします。 スレッド競合モニタリングが有効になっている場合、スレッドが同期のためにブロックしたか、通知を待機した累積経過時間が収集され、ThreadInfoオブジェクトに返されます。

isThreadContentionMonitoringSupported()メソッドを使って、Java仮想マシンがスレッド・コンテンション監視をサポートしているかどうかを判定できます。 スレッド・コンテンション監視はデフォルトで無効です。 setThreadContentionMonitoringEnabled(boolean)メソッドを使って、スレッド・コンテンション監視を有効にすることができます。

同期情報とデッドロック検出

一部のJava仮想マシンは、オブジェクト・モニターの使用量および所有可能なシンクロナイザの使用量の監視をサポートしている場合があります。 getThreadInfo(long[], boolean, boolean)メソッドとdumpAllThreads(boolean, boolean)メソッドを使用すると、スレッドのスタック・トレースと同期情報(スレッドが取得をブロックされているまたは待機しているロックに関して、スレッドが現在所有しているロックに関してなど)を取得できます。

ThreadMXBeanインタフェースには、実行中のアプリケーションでデッドロックを見つけるためのfindMonitorDeadlockedThreads()およびfindDeadlockedThreads()メソッドが用意されています。

導入されたバージョン:
1.5
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
    スタック・トレースおよび同期情報を含むすべてのライブ・プラットフォーム・スレッドのスレッド情報を返します。
    default ThreadInfo[]
    dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
    指定された最大数の要素と同期情報のスタック・トレースを持つすべてのライブ・プラットフォーム・スレッドのスレッド情報を返します。
    long[]
    オブジェクト・モニターまたは「独自のシンクロナイザ」の取得を待機しているデッドロック状態のプラットフォーム・スレッドのサイクルを検索します。
    long[]
    オブジェクト・モニターの取得を待機しているデッドロック状態にあるプラットフォーム・スレッドのサイクルを検索します。
    long[]
    すべてのライブ・プラットフォーム・スレッドのthreadIDsを返します。
    long
    現在のスレッドの合計CPU時間をナノ秒単位で返します。
    long
    現在のスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。
    int
    デーモン・スレッドであるライブ・プラットフォーム・スレッドの現在の数を返します。
    int
    Java仮想マシンが起動したかピークがリセットされた後のライブ・プラットフォーム・スレッドのピーク数を返します。
    int
    デーモンと非デーモン・スレッドの両方を含むライブ・プラットフォーム・スレッドの現在の数を返します。
    long
    指定されたIDのスレッドの合計CPU時間(ナノ秒単位)を返します。
    getThreadInfo(long id)
    指定されたidのスレッドのスレッド情報をスタック・トレースなしで返します。
    getThreadInfo(long[] ids)
    スタック・トレースのない入力配列idsにIDがある各スレッドのスレッド情報を返します。
    getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
    IDが入力配列idsにある各スレッドのスレッド情報を、スタック・トレースおよび同期情報とともに返します。
    default ThreadInfo[]
    getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
    IDが入力配列idsにある各スレッドのスレッド情報を返します。指定された最大数の要素と同期情報のスタック・トレースが返されます。
    getThreadInfo(long[] ids, int maxDepth)
    IDが入力配列ids内にある各スレッドのスレッド情報を、指定した数のスタック・トレース要素のスタック・トレースとともに返します。
    getThreadInfo(long id, int maxDepth)
    指定されたidのスレッドのスレッド情報を、指定した数のスタック・トレース要素のスタック・トレースとともに返します。
    long
    指定されたIDのスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。
    long
    Java仮想マシンの起動後に作成および起動されたプラットフォーム・スレッドの合計数を返します。
    boolean
    getCurrentThreadCpuTime()およびgetCurrentThreadUserTime()メソッドを使用して、Java仮想マシンがプラットフォーム・スレッドからのCPU時間測定をサポートするかどうかをテストします。
    boolean
    Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートするかどうかをテストします。
    boolean
    Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートするかどうかをテストします。
    boolean
    スレッド・コンテンション監視が有効かどうかをテストします。
    boolean
    Java仮想マシンがスレッド・コンテンション監視をサポートするかどうかをテストします。
    boolean
    スレッドのCPU時間測定が有効かどうかをテストします。
    boolean
    Java仮想マシン実装がプラットフォーム・スレッドのCPU時間測定をサポートしているかどうかをテストします。
    void
    ピーク・スレッド数を現在のライブ・プラットフォーム・スレッド数にリセットします。
    void
    スレッド・コンテンション監視を有効または無効にします。
    void
    setThreadCpuTimeEnabled(boolean enable)
    スレッドのCPU時間測定を有効または無効にします。

    インタフェースjava.lang.management.PlatformManagedObjectで宣言されたメソッド

    getObjectName
  • メソッドの詳細

    • getThreadCount

      int getThreadCount()
      デーモンと非デーモン・スレッドの両方を含むライブ・プラットフォーム・スレッドの現在の数を返します。 このカウントには仮想スレッドは含まれません。
      戻り値:
      ライブ・プラットフォーム・スレッドの現在の数。
    • getPeakThreadCount

      int getPeakThreadCount()
      Java仮想マシンが起動したかピークがリセットされた後のライブ・プラットフォーム・スレッドのピーク数を返します。 このカウントには仮想スレッドは含まれません。
      戻り値:
      最大ライブ・プラットフォーム・スレッド数。
    • getTotalStartedThreadCount

      long getTotalStartedThreadCount()
      Java仮想マシンの起動後に作成および起動されたプラットフォーム・スレッドの合計数を返します。 このカウントには仮想スレッドは含まれません。
      戻り値:
      開始されたプラットフォーム・スレッドの合計数。
    • getDaemonThreadCount

      int getDaemonThreadCount()
      デーモン・スレッドであるライブ・プラットフォーム・スレッドの現在の数を返します。 このカウントには仮想スレッドは含まれません。
      戻り値:
      デーモン・スレッドであるライブ・プラットフォーム・スレッドの現在の数。
    • getAllThreadIds

      long[] getAllThreadIds()
      すべてのライブ・プラットフォーム・スレッドのthreadIDsを返します。 仮想スレッドのスレッドIDは含まれません。 返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。
      戻り値:
      longの配列で、それぞれがスレッドIDです。
      例外:
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
    • getThreadInfo

      ThreadInfo getThreadInfo(long id)
      指定されたidのスレッドのスレッド情報をスタック・トレースなしで返します。 このメソッドは、次を呼び出すのと同等です。
      getThreadInfo(id, 0);

      このメソッドは、指定されたIDのスレッドのスレッド情報を表すThreadInfoオブジェクトを返します。 返されたThreadInfoオブジェクトのスタック・トレース、ロックされたモニターおよびロックされたシンクロナイザは空になります。 指定されたIDのスレッドが仮想スレッドであるか、動作していないか、存在しない場合、このメソッドはnullを返します。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。

      MBeanServerアクセス:
      ThreadInfoのマップされたタイプは、ThreadInfo.fromメソッドで指定された属性を持つCompositeDataです。

      パラメータ:
      id - スレッドのスレッドID。 正の値でなければならない
      戻り値:
      指定されたIDのスレッドに対するThreadInfoオブジェクト(スタック・トレースなし、ロックされたモニターなし、シンクロナイザ情報なし)。null(指定されたIDのスレッドが仮想スレッドである場合、または存在しない場合)。
      例外:
      IllegalArgumentException - id <= 0の場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
    • getThreadInfo

      ThreadInfo[] getThreadInfo(long[] ids)
      スタック・トレースのない入力配列idsにIDがある各スレッドのスレッド情報を返します。 このメソッドは、次を呼び出すのと同等です。
         getThreadInfo(ids, 0);
       

      このメソッドは、ThreadInfoオブジェクトの配列を返します。 ThreadInfoオブジェクトのスタック・トレース、ロックされたモニターおよびロックされたシンクロナイザは空になります。 指定されたIDのスレッドが仮想スレッドであるか、動作していないか、存在しない場合、返される配列内の対応する要素にnullが含まれます。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。

      MBeanServerアクセス:
      ThreadInfoのマップされたタイプは、ThreadInfo.fromメソッドで指定された属性を持つCompositeDataです。

      パラメータ:
      ids - スレッドIDの配列。
      戻り値:
      スタック・トレース、ロックされたモニター、およびシンクロナイザ情報を持たないIDの入力配列の対応する要素にIDがあるスレッドの情報を含むThreadInfoオブジェクトの配列。
      例外:
      IllegalArgumentException - 入力配列idsの要素が<= 0の場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
    • getThreadInfo

      ThreadInfo getThreadInfo(long id, int maxDepth)
      指定されたidのスレッドのスレッド情報を、指定した数のスタック・トレース要素のスタック・トレースとともに返します。 maxDepthパラメータは、スタック・トレースから取得されるStackTraceElementの最大数を示します。 maxDepth == Integer.MAX_VALUEの場合、スレッドのスタック・トレース全体がダンプされます。 maxDepth == 0の場合、スレッドのスタック・トレースはダンプされません。 このメソッドは、スレッドのロックされたモニターおよびロックされたシンクロナイザを取得しません。

      Java仮想マシンにスレッドまたはmaxDepth == 0に関するスタック・トレース情報がない場合、ThreadInfoオブジェクトのスタック・トレースはStackTraceElementの空の配列になります。

      指定されたIDのスレッドが仮想スレッドであるか、動作していないか、存在しない場合、このメソッドはnullを返します。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。

      MBeanServerアクセス:
      ThreadInfoのマップされたタイプは、ThreadInfo.fromメソッドで指定された属性を持つCompositeDataです。

      パラメータ:
      id - スレッドのスレッドID。 正の値でなければならない
      maxDepth - ダンプされるスタック・トレースのエントリの最大数。 Integer.MAX_VALUEを使用して、スタック全体をダンプするようにリクエストできます。
      戻り値:
      ロックされたモニターおよびシンクロナイザ情報がない特定のIDのスレッドのThreadInfonullは、指定されたIDのスレッドが仮想スレッドであるか、存在していない場合です。
      例外:
      IllegalArgumentException - id <= 0の場合。
      IllegalArgumentException - maxDepth is negativeの場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
    • getThreadInfo

      ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
      IDが入力配列ids内にある各スレッドのスレッド情報を、指定した数のスタック・トレース要素のスタック・トレースとともに返します。 maxDepthパラメータは、スタック・トレースから取得されるStackTraceElementの最大数を示します。 maxDepth == Integer.MAX_VALUEの場合、スレッドのスタック・トレース全体がダンプされます。 maxDepth == 0の場合、スレッドのスタック・トレースはダンプされません。 このメソッドは、スレッドのロックされたモニターおよびロックされたシンクロナイザは取得しません。

      Java仮想マシンにスレッドまたはmaxDepth == 0に関するスタック・トレース情報がない場合、ThreadInfoオブジェクトのスタック・トレースはStackTraceElementの空の配列になります。

      このメソッドは、ThreadInfoオブジェクトの配列を返します。それぞれが、ids配列と同じ索引を持つスレッドに関するスレッド情報です。 指定されたIDのスレッドが仮想スレッドであるか、動作していないか、存在しない場合、nullは返される配列の対応する要素に設定されます。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。

      MBeanServerアクセス:
      ThreadInfoのマップされたタイプは、ThreadInfo.fromメソッドで指定された属性を持つCompositeDataです。

      パラメータ:
      ids - スレッドIDの配列
      maxDepth - ダンプされるスタック・トレースのエントリの最大数。 Integer.MAX_VALUEを使用して、スタック全体をダンプするようにリクエストできます。
      戻り値:
      ロックされたモニターおよびシンクロナイザ情報を持たないIDの入力配列の対応する要素にIDがあるスレッドの情報を含むThreadInfoオブジェクトの配列。
      例外:
      IllegalArgumentException - maxDepth is negativeの場合。
      IllegalArgumentException - 入力配列idsの要素が<= 0の場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
    • isThreadContentionMonitoringSupported

      boolean isThreadContentionMonitoringSupported()
      Java仮想マシンがスレッド・コンテンション監視をサポートするかどうかをテストします。
      戻り値:
      Java仮想マシンがスレッド競合のモニタリングをサポートしている場合はtrue、サポートされていない場合はfalse
    • isThreadContentionMonitoringEnabled

      boolean isThreadContentionMonitoringEnabled()
      スレッド・コンテンション監視が有効かどうかをテストします。
      戻り値:
      スレッド競合モニタリングが有効な場合はtrue、それ以外の場合はfalse
      例外:
      UnsupportedOperationException - Java仮想マシンがスレッド・コンテンション監視をサポートしない場合。
      関連項目:
    • setThreadContentionMonitoringEnabled

      void setThreadContentionMonitoringEnabled(boolean enable)
      スレッド・コンテンション監視を有効または無効にします。 デフォルト時は、スレッドの競合のモニタリングが無効になっています。
      パラメータ:
      enable - 有効にするにはtrue、無効にするにはfalse
      例外:
      UnsupportedOperationException - Java仮想マシンがスレッド・コンテンション監視をサポートしない場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("control")を持たない場合。
      関連項目:
    • getCurrentThreadCpuTime

      long getCurrentThreadCpuTime()
      現在のスレッドの合計CPU時間をナノ秒単位で返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。 実装がユーザー・モード時とシステム・モード時を区別する場合、返されるCPU時間は、ユーザー・モードまたはシステム・モードで現在のスレッドが実行した時間の合計です。

      ローカル管理用の便利なメソッドであり、次のようにコールすることに相当します:

         getThreadCpuTime(Thread.currentThread().threadId());
       

      戻り値:
      現在のスレッドがプラットフォーム・スレッドの場合、およびCPU時間の測定が有効な場合は、現在のスレッドの合計CPU時間。それ以外の場合は-1
      例外:
      UnsupportedOperationException - Java仮想マシンが現在のスレッドのCPU時間測定をサポートしない場合。
      関連項目:
    • getCurrentThreadUserTime

      long getCurrentThreadUserTime()
      現在のスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。

      ローカル管理用の便利なメソッドであり、次のようにコールすることに相当します:

         getThreadUserTime(Thread.currentThread().threadId());
       

      戻り値:
      現在のスレッドがプラットフォーム・スレッドであり、CPU時間測定が有効な場合は、現在のスレッドのユーザー・レベルのCPU時間。それ以外の場合は-1
      例外:
      UnsupportedOperationException - Java仮想マシンが現在のスレッドのCPU時間測定をサポートしない場合。
      関連項目:
    • getThreadCpuTime

      long getThreadCpuTime(long id)
      指定されたIDのスレッドの合計CPU時間(ナノ秒単位)を返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。 実装がユーザー・モード時とシステム・モード時を区別する場合、返されるCPU時間は、ユーザー・モードまたはシステム・モードでそのスレッドが実行した時間の合計です。

      指定されたIDのスレッドが仮想スレッドであるか、有効でないか、存在しない場合、このメソッドは-1を返します。 CPU時間の測定が無効になっている場合、このメソッドは-1を返します。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。

      スレッドが起動されたあとにCPU時間測定が有効になった場合、Java仮想マシンの実装では、CPU時間測定が起動されたポイントとしてCPU時間測定機能が有効になった時間以前の任意の時間を選択できます。

      パラメータ:
      id - スレッドのスレッドID
      戻り値:
      指定したIDのスレッドがプラットフォーム・スレッドであり、スレッドがアクティブで、CPU時間の測定が有効な場合、指定されたIDのスレッドの合計CPU時間。それ以外の場合は-1
      例外:
      IllegalArgumentException - id <= 0の場合。
      UnsupportedOperationException - Java仮想マシンがほかのスレッドのCPU時間測定をサポートしない場合。
      関連項目:
    • getThreadUserTime

      long getThreadUserTime(long id)
      指定されたIDのスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。

      指定されたIDのスレッドが仮想スレッドであるか、動作していないか、存在しない場合、このメソッドは-1を返します。 CPU時間の測定が無効になっている場合、このメソッドは-1を返します。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。

      スレッドが起動されたあとにCPU時間測定が有効になった場合、Java仮想マシンの実装では、CPU時間測定が起動されたポイントとしてCPU時間測定機能が有効になった時間以前の任意の時間を選択できます。

      パラメータ:
      id - スレッドのスレッドID
      戻り値:
      指定したIDのスレッドがプラットフォーム・スレッドであり、スレッドがアクティブであり、CPU時間測定が有効な場合、指定されたIDのスレッドに対するユーザー・レベルのCPU時間。それ以外の場合は-1
      例外:
      IllegalArgumentException - id <= 0の場合。
      UnsupportedOperationException - Java仮想マシンがほかのスレッドのCPU時間測定をサポートしない場合。
      関連項目:
    • isThreadCpuTimeSupported

      boolean isThreadCpuTimeSupported()
      Java仮想マシン実装がプラットフォーム・スレッドのCPU時間測定をサポートしているかどうかをテストします。 プラットフォーム・スレッドのCPU時間測定をサポートするJava仮想マシン実装では、現在のスレッドがプラットフォーム・スレッドの場合、現在のスレッドのCPU時間測定もサポートされます。
      戻り値:
      Java仮想マシンがプラットフォーム・スレッドのCPU時間測定をサポートする場合はtrue、そうでない場合はfalse
    • isCurrentThreadCpuTimeSupported

      boolean isCurrentThreadCpuTimeSupported()
      getCurrentThreadCpuTime()およびgetCurrentThreadUserTime()メソッドを使用して、Java仮想マシンがプラットフォーム・スレッドからのCPU時間測定をサポートするかどうかをテストします。 このメソッドは、isThreadCpuTimeSupported()trueを返す場合、trueを返します。
      戻り値:
      Java仮想マシンが現在のプラットフォーム・スレッドのCPU時間測定をサポートする場合はtrue、そうでない場合はfalse
    • isThreadCpuTimeEnabled

      boolean isThreadCpuTimeEnabled()
      スレッドのCPU時間測定が有効かどうかをテストします。
      戻り値:
      スレッドCPU時間の測定が有効な場合はtrue、それ以外の場合はfalse
      例外:
      UnsupportedOperationException - Java仮想マシンがほかのスレッドばかりでなく現在のスレッドのCPU時間測定もサポートしない場合。
      関連項目:
    • setThreadCpuTimeEnabled

      void setThreadCpuTimeEnabled(boolean enable)
      スレッドのCPU時間測定を有効または無効にします。 デフォルトはプラットフォームに依存します。
      パラメータ:
      enable - 有効にするにはtrue、無効にするにはfalse
      例外:
      UnsupportedOperationException - Java仮想マシンが任意のスレッドばかりでなく現在のスレッドのCPU時間測定もサポートしない場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("control")を持たない場合。
      関連項目:
    • findMonitorDeadlockedThreads

      long[] findMonitorDeadlockedThreads()
      オブジェクト・モニターの取得を待機しているデッドロック状態にあるプラットフォーム・スレッドのサイクルを検索します。 つまり、同期ブロックの入力を待機しているプラットフォーム・スレッド、またはObject.waitコール後に同期ブロックの再入力を待機しているプラットフォーム・スレッドです。各プラットフォーム・スレッドは1つのモニターを所有し、別のプラットフォーム・スレッドによってサイクル内にすでに保持されている別のモニターを取得しようとしています。 仮想スレッドを含むサイクルは、このメソッドでは見つかりません。

      公式には、スレッドが、「ほかのスレッドにより保有されるオブジェクト・モニターを待機している」関係にあるサイクルの一部である場合、スレッドはモニター・デッドロックされます。 もっとも簡単なケースについて説明すると、スレッドAは、スレッドBが所有するモニターを待機するのをブロックされ、スレッドBはスレッドAが所有するモニターを待機するのをブロックされます。

      このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。

      このメソッドは、オブジェクト・モニターに関するデッドロックだけを検索します。 オブジェクト・モニターと所有可能なシンクロナイザの両方に関するデッドロックを検索するには、findDeadlockedThreadsメソッドを使用するようにしてください。

      戻り値:
      デッドロックがモニターされるプラットフォーム・スレッドのIDの配列(存在する場合)。それ以外の場合はnull
      例外:
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
      関連項目:
    • resetPeakThreadCount

      void resetPeakThreadCount()
      ピーク・スレッド数を現在のライブ・プラットフォーム・スレッド数にリセットします。
      例外:
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("control")を持たない場合。
      関連項目:
    • findDeadlockedThreads

      long[] findDeadlockedThreads()
      オブジェクト・モニターまたは「独自のシンクロナイザ」の取得を待機しているデッドロック状態のプラットフォーム・スレッドのサイクルを検索します。 プラットフォーム・スレッドは、サイクル内の別のプラットフォーム・スレッドによってすでに保持されている別のロックを取得しようとして、各スレッドが1つのロックを所有している場合、これらの2つのタイプのロックを待機するサイクル内の「デッドロック」です。 仮想スレッドを含むサイクルは、このメソッドでは見つかりません。

      このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。

      戻り値:
      オブジェクト・モニターまたは所有可能なシンクロナイザ(ある場合)を待機しているデッドロックされたプラットフォーム・スレッドのIDの配列。それ以外の場合はnull
      例外:
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
      UnsupportedOperationException - Java仮想マシンが所有可能なシンクロナイザの使用量のモニタリングをサポートしない場合。
      導入されたバージョン:
      1.6
      関連項目:
    • isObjectMonitorUsageSupported

      boolean isObjectMonitorUsageSupported()
      Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートするかどうかをテストします。
      戻り値:
      Java仮想マシンがオブジェクト・モニター使用状況のモニタリングをサポートしている場合はtrue、そうでない場合はfalse
      導入されたバージョン:
      1.6
      関連項目:
    • isSynchronizerUsageSupported

      boolean isSynchronizerUsageSupported()
      Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートするかどうかをテストします。
      戻り値:
      Java仮想マシンが、所有可能なシンクロナイザ使用状況のモニタリングをサポートしている場合はtrue、それ以外の場合はfalse
      導入されたバージョン:
      1.6
      関連項目:
    • getThreadInfo

      ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
      IDが入力配列idsにある各スレッドのスレッド情報を、スタック・トレースおよび同期情報とともに返します。 これは、次を呼び出すのと同等です。
      getThreadInfo(ids, lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
      パラメータ:
      ids - スレッドIDの配列。
      lockedMonitors - trueを指定すると、ロックされたすべてのモニターが取得されます。
      lockedSynchronizers - trueを指定すると、ロックされた所有可能なシンクロナイザがすべて取得されます。
      戻り値:
      IDの入力配列の対応する要素にIDがあるスレッドの情報を含むThreadInfoオブジェクトの配列。
      例外:
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
      UnsupportedOperationException -
      導入されたバージョン:
      1.6
      関連項目:
    • getThreadInfo

      default ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
      IDが入力配列idsにある各スレッドのスレッド情報を返します。指定された最大数の要素と同期情報のスタック・トレースが返されます。 maxDepth == 0の場合、スレッドのスタック・トレースはダンプされません。

      このメソッドは、スレッドごとにスレッド情報のスナップショットを取得します。たとえば次のとおりです。

      • 指定された最大数の要素のスタック・トレース、
      • lockedMonitorstrueの場合、オブジェクトは現在スレッドによってロックされているモニター
      • lockedSynchronizerstrueの場合、現在スレッドによってロックされている「独自のシンクロナイザ」

      このメソッドは、ThreadInfoオブジェクトの配列を返します。それぞれが、ids配列と同じ索引を持つスレッドに関するスレッド情報です。 指定されたIDのスレッドが仮想スレッドであるか、動作していないか、存在しない場合、nullは返される配列の対応する要素に設定されます。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。

      スレッドがオブジェクト・モニターをロックしない場合、またはlockedMonitorsfalseの場合、返されるThreadInfoオブジェクトには空のMonitorInfo配列が含まれます。 同様に、スレッドがシンクロナイザをロックしない場合、またはlockedSynchronizersfalseの場合、返されるThreadInfoオブジェクトには空のLockInfo配列が含まれます。

      lockedMonitorsパラメータとlockedSynchronizersパラメータの両方がfalseの場合、次のコールと同等です:

           getThreadInfo(ids, maxDepth)
       

      このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。

      MBeanServerアクセス:
      ThreadInfoのマップされたタイプは、ThreadInfo.fromメソッドで指定された属性を持つCompositeDataです。

      実装要件:
      デフォルト実装はUnsupportedOperationExceptionをスローします。
      パラメータ:
      ids - スレッドIDの配列。
      lockedMonitors - trueを指定すると、ロックされたすべてのモニターが取得されます。
      lockedSynchronizers - trueを指定すると、ロックされた所有可能なシンクロナイザがすべて取得されます。
      maxDepth - スタック・トレースから取得するStackTraceElementの最大数を示します。
      戻り値:
      IDの入力配列の対応する要素にIDがあるスレッドの情報を含むThreadInfoオブジェクトの配列。
      例外:
      IllegalArgumentException - maxDepthが負の場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
      UnsupportedOperationException -
      導入されたバージョン:
      10
      関連項目:
    • dumpAllThreads

      ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
      スタック・トレースおよび同期情報を含むすべてのライブ・プラットフォーム・スレッドのスレッド情報を返します。 仮想スレッドのスレッドIDは含まれません。 このメソッドは、次を呼び出すのと同等です。
      dumpAllThreads(lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
      パラメータ:
      lockedMonitors - trueの場合、ロックされたすべてのモニターをダンプします。
      lockedSynchronizers - trueの場合、ロックされたすべての所有可能なシンクロナイザをダンプします。
      戻り値:
      すべてのライブ・プラットフォーム・スレッドのThreadInfo配列。
      例外:
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
      UnsupportedOperationException -
      導入されたバージョン:
      1.6
      関連項目:
    • dumpAllThreads

      default ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
      指定された最大要素数および同期情報のスタック・トレースを含むすべてのライブ・プラットフォーム・スレッドのスレッド情報を返します。maxDepth == 0の場合、スレッドのスタック・トレースはダンプされません。 仮想スレッドのスレッドIDは含まれません。 返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。

      このメソッドは、getThreadInfo(long[], boolean, boolean, int)メソッドで指定されているThreadInfoオブジェクトの配列を返します。

      実装要件:
      デフォルト実装はUnsupportedOperationExceptionをスローします。
      パラメータ:
      lockedMonitors - trueの場合、ロックされたすべてのモニターをダンプします。
      lockedSynchronizers - trueの場合、ロックされたすべての所有可能なシンクロナイザをダンプします。
      maxDepth - スタック・トレースから取得するStackTraceElementの最大数を示します。
      戻り値:
      すべてのライブ・プラットフォーム・スレッドのThreadInfo配列。
      例外:
      IllegalArgumentException - maxDepthが負の場合。
      SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
      UnsupportedOperationException -
      導入されたバージョン:
      10
      関連項目: