Java で長時間およびブロッキングする処理を正しくキャンセルする方法:
Thread.interrupt() による協調的割り込み、
Future.cancel() によるタスクのキャンセルと
CancellationException の挙動、
CompletableFuture におけるタイムアウトとキャンセル(
orTimeout、
completeOnTimeout)、
StructuredTaskScope を用いた構造化並行性、共通のデッドライン(time‑budget)とスタック下方向へのタイムアウト伝播(
Instant/
Duration および
Scoped Values を含む)。ブロッキングIOでの実務と典型的な誤りを解説します。