1
我有這個使用:Spring MVC(Controller + Service + ThreadPoolTaskExecutor),Callable和Future。Java多線程。如何停止線程並釋放啓動器?
我有@Controller
launch-method [invokes Service:launch-method and get result with Future]
stop-method [invokes Service:stop-method]
@Service [to launch async Tasks]
launch-method [Loop with threadPoolTaskExecutor.submit(callable)]
stop-method [threadPoolTaskExecutor.shutdown()]
停止事件流是:
- 用戶點擊停止按鈕,並調用一個控制器:停止-方法
- 的控制器:停止-方法調用服務:停止方法
- ?該服務:停止法關機並通知控制器:發射法
我需要編寫第3步,通知到控制器:發射法,這一進程已經完成。
我不知道爲什麼threadPoolTaskExecutor.shutdown()不會釋放控制器:發射法,這是在等待:結果=的Future.get();並沒有引發異常。
try {
for (Future<String> future : sentResult) {
result = future.get();
...
}
} catch (ExecutionException e) {...}
catch (InterruptedException e) {...}
catch (CancellationException e) {...}
catch (Exception e) {...}
有什麼建議嗎?
謝謝,但Controller和Service之間的通信是使用正在等待Service方法結果的Future對象來建立的 –