本格的なマルチスレッド実践: 手動で
Threadを作成する代わりに
ExecutorService にタスクを渡し、プール、キュー、ライフサイクル(
shutdown(),
shutdownNow())を管理する。
Runnable と
Callable<T> の違いを解説し、
Future とそのメソッド(
get(),
isDone(),
cancel(...),
isCancelled())で結果を取得する。複数タスクの起動、
invokeAll/
invokeAny、
ExecutionException の扱いとよくある落とし穴も紹介する。