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对象来建立的 –