0

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

我已经测试了代码,如果我把 aThread.sleep代替getForObject我得到一个InterruptedException. 但是,当任务在里面时getForObject不会发生中断。实际上,在 Restful 调用完成之前,该方法不会返回。

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

我看到这篇文章取消中止中断了一个 spring android resttemplate 请求,但唯一提出的解决方案似乎是一个 kludge。

4

1 回答 1

0

我不熟悉该RestTemplate课程,但听起来您有一个不可中断的阻塞呼叫。这意味着取消未来或中断线程不会有任何影响。在这种情况下,我知道的唯一解决方案是使用不推荐使用的Thread.terminate()方法来终止线程。请注意,您必须非常小心地执行此操作,因为它会使您的对象处于无效状态。

于 2012-11-16T19:15:21.410 回答