クラス ExecThreadManager
java.lang.Object
org.opengion.hayabusa.report2.ExecThreadManager
帳票処理を行う各スレッドを管理するクラスです。
各スレッドは、内部的にプールされます。
スレッドのIDはOOoQueue#getThreadId()で返される値です。
スレッドが生成されるタイミングは、そのIDで初めてスタック要求が来た(insertQueue()が呼ばれた)時です。
指定のスレッドを終了するには、funishThread( key )を呼び出します。
全てのスレッドを終了するには、funishAllThreads()を呼び出します。
現時点での実装では、生成されたスレッドに対しての監視は行っていません。
これは、特定のスレッドがフリーズした際、外部から強制終了を行おうとすると、
監視スレッドもフリーズしてしまう問題があるためです。
(但し、1つのsoffice.binのプロセスに対してシリアルに対して処理している限りでは、
フリーズ問題は発生しないようです)
- 機能分類
- 帳票システム
- 導入されたバージョン:
- JDK1.6
-
メソッドの概要
修飾子とタイプメソッド説明static void
全てのスレッドを終了します。static void
finishThread
(String threadId) 指定のスレッドを終了します。static ConcurrentMap
<String, String> スレッド情報のマップを返します。static void
insertQueue
(ExecQueue queue) キューを該当するスレッドにスタックする。static void
insertQueueOnNewThread
(ExecQueue queue) キューを該当するスレッドにスタックする このメソッドでは、既に同じスレッドが存在するかどうかをチェックせずに必ず 新しいスレッドを生成し、キューを処理します。static void
setDebug
(boolean flag) デバッグフラグの設定。
-
メソッドの詳細
-
insertQueue
キューを該当するスレッドにスタックする。- パラメータ:
queue
- ExecQueueオブジェクト- 変更履歴:
- 4.3.0.0 (2008/07/15) スレッドIDにシステムIDを付加
-
insertQueueOnNewThread
キューを該当するスレッドにスタックする このメソッドでは、既に同じスレッドが存在するかどうかをチェックせずに必ず 新しいスレッドを生成し、キューを処理します。 また、処理が完了した後、そのスレッドは、WAITすることなく終了します。- パラメータ:
queue
- ExecQueueオブジェクト- 変更履歴:
- 5.1.6.0 (2010/05/01) 新規作成
-
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
指定のスレッドを終了します。 ※ 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
デバッグフラグの設定。- パラメータ:
flag
- デバッグフラグ [true:デバッグ/false:通常]- 変更履歴:
- 4.3.0.0 (2008/07/15) デバッグ追加
-