Spring RestTemplate不允许取消/ InterruptedException

时间:2012-11-16 11:46:03

标签: java spring rest

我有一个使用RestTemplate来调用getForObject的流程。此任务将提交给执行程序服务。在尝试取消它之前,我允许进程运行时间为x秒。但是当我调用Future.cancel(true)并且任务在getForObject方法中等待时,线程/任务不会被取消。

我测试了代码,如果我用Thread.sleep代替getForObject,我会得到InterruptedException。但是,当任务在getForObject内时,不会发生中断。面对该方法在Restful调用完成之前不会返回。

有没有办法取消休息电话?

我看过这篇文章cancel abort interrupt a spring android resttemplate request,但唯一提出的解决方案似乎是一个kludge。

1 个答案:

答案 0 :(得分:0)

我不熟悉RestTemplate类,但听起来你有一个不可中断的阻塞调用。这意味着取消未来或中断线程不会产生任何影响。在这种情况下,我所知道的唯一解决方案是使用已弃用的Thread.terminate()方法来终止该线程。请注意,您必须非常小心这样做,因为它可能会使您的对象处于无效状态。