スレッドのプールを使用してスレッドを実行する必要があります。spring フレームワークの TaskExecutor クラスを使用します。スレッドを同期する必要があるため、FutureTask クラスを使用します。最後に、コードは次のようになります。
private TaskExecutor taskExecutor;
FutureTask futureTask=new FutureTask(new MyTask());
taskExecutor.execute(futureTask);
try {
futureTask.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
実際、MyTask を実行するスレッドが中断される場合があります。デバッグ モードでは、MyTask のコードで割り込みフラグが設定されていることがわかります。残念ながら、中断された例外はキャッチされず、その理由がわかりません。何か案が?