クラス ExecThreadManager

java.lang.Object
org.opengion.hayabusa.report2.ExecThreadManager

public final class ExecThreadManager extends Object
帳票処理を行う各スレッドを管理するクラスです。 各スレッドは、内部的にプールされます。 スレッドのIDはOOoQueue#getThreadId()で返される値です。 スレッドが生成されるタイミングは、そのIDで初めてスタック要求が来た(insertQueue()が呼ばれた)時です。 指定のスレッドを終了するには、funishThread( key )を呼び出します。 全てのスレッドを終了するには、funishAllThreads()を呼び出します。 現時点での実装では、生成されたスレッドに対しての監視は行っていません。 これは、特定のスレッドがフリーズした際、外部から強制終了を行おうとすると、 監視スレッドもフリーズしてしまう問題があるためです。 (但し、1つのsoffice.binのプロセスに対してシリアルに対して処理している限りでは、 フリーズ問題は発生しないようです)
機能分類
帳票システム
導入されたバージョン:
JDK1.6
  • メソッドの詳細

    • insertQueue

      public static void insertQueue(ExecQueue queue)
      キューを該当するスレッドにスタックする。
      パラメータ:
      queue - ExecQueueオブジェクト
      変更履歴:
      4.3.0.0 (2008/07/15) スレッドIDにシステムIDを付加
    • insertQueueOnNewThread

      public static void insertQueueOnNewThread(ExecQueue queue)
      キューを該当するスレッドにスタックする このメソッドでは、既に同じスレッドが存在するかどうかをチェックせずに必ず 新しいスレッドを生成し、キューを処理します。 また、処理が完了した後、そのスレッドは、WAITすることなく終了します。
      パラメータ:
      queue - ExecQueueオブジェクト
      変更履歴:
      5.1.6.0 (2010/05/01) 新規作成
    • finishAllThreads

      public static void finishAllThreads()
      全てのスレッドを終了します。 ※ REP21/result2.jsp で、使用。
      変更履歴:
      6.4.3.3 (2016/03/04) Map#forEach で対応する。, 8.5.6.0 (2024/02/29) common/HybsContextListener から移動。, 8.5.6.1 (2024/03/29) REP21/result2.jsp で、使用していたので復活。
    • finishThread

      public static void finishThread(String threadId)
      指定のスレッドを終了します。 ※ REP21/entry.jsp で、使用。
      パラメータ:
      threadId - スレッドID
    • getThreadInfo

      スレッド情報のマップを返します。 ※ REP21/result2.jsp で、使用。
      戻り値:
      スレッド情報のマップ
      変更履歴:
      6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。, 6.4.3.3 (2016/03/04) 戻すMapが、not null制限つきであることを示すため、ConcurrentMap に置き換えます。, 6.4.3.3 (2016/03/04) Map#forEach で対応する。
    • setDebug

      public static void setDebug(boolean flag)
      デバッグフラグの設定。
      パラメータ:
      flag - デバッグフラグ [true:デバッグ/false:通常]
      変更履歴:
      4.3.0.0 (2008/07/15) デバッグ追加