基本構成#
上図から、newCachedThreadPool は 0 つのコアスレッド数 + Integer.MAX_VALUE の最大スレッド数 + SynchronousQueue ブロッキングキューで構成されていることがわかります(各スレッドの生存時間は 60 秒を超えない)。
実行フロー#
SynchronousQueue ブロッキングキューに関しては、このブロッキングキューはオブジェクトを取得するときにのみオファーできるため、赤い枠部分は false を返し入ることができません。この場合、緑の枠部分に進み判断が行われます(この時、通常のスレッドが開始され、対応するコマンドが実行されます)。