12月27日のJJUGナイトセミナーLT大会に参加しました(LT資料)。 会場片付けの際、マルチスレッド処理に関して発表された @hiroga_cc さんと、ForkJoinPoolとThreadPoolExecutorの使い分けについて、少しだけおしゃべりしました。その場では頭がこんがらがってしまったので、改めて整理します。 要旨 ForkJoinPoolは、次のようなジョブが効率的に実行できるように設計されたExecutorです。 各タスクがIOをともなわない、CPUヘビーな処理であること。 各タスクの処理が、新しいタスクを産み出すような、再帰的タスク構成であること。 上記の条件を満たさないジョブに対して、ForkJoinPoolが使えないというわけではありません。ただし、タスク発生状況に応じてに応じてスレッドの生成・破棄を制御したい場合などは、ThreadPoolExecutorの方