我有一个使用RestTemplate
来调用getForObject
的流程。此任务将提交给执行程序服务。在尝试取消它之前,我允许进程运行时间为x秒。但是当我调用Future.cancel(true)
并且任务在getForObject
方法中等待时,线程/任务不会被取消。
我测试了代码,如果我用Thread.sleep
代替getForObject
,我会得到InterruptedException
。但是,当任务在getForObject
内时,不会发生中断。面对该方法在Restful调用完成之前不会返回。
有没有办法取消休息电话?
我看过这篇文章cancel abort interrupt a spring android resttemplate request,但唯一提出的解决方案似乎是一个kludge。
答案 0 :(得分:0)
我不熟悉RestTemplate
类,但听起来你有一个不可中断的阻塞调用。这意味着取消未来或中断线程不会产生任何影响。在这种情况下,我所知道的唯一解决方案是使用已弃用的Thread.terminate()
方法来终止该线程。请注意,您必须非常小心这样做,因为它可能会使您的对象处于无效状态。