0

RestTemplateを呼び出すプロセスがありますgetForObject。このタスクはエグゼキュータ サービスに送信されます。キャンセルを試みる前に、プロセスの実行時間を x 秒許可します。ただし、呼び出しFuture.cancel(true)てタスクがメソッドで待機しているgetForObject場合、スレッド/タスクはキャンセルされません。

Thread.sleepの代わりに a を配置すると、getForObjectが得られるようにコードをテストしましたInterruptedException。ただし、タスクが内部にある場合getForObjectは割り込みが発生しません。実際には、Restful 呼び出しが完了するまでメソッドは戻りません。

残りの通話をキャンセルする方法はありますか?

私はこの投稿をキャンセルし、アボートが春のAndroid resttemplateリクエストを中断するのを見ましたが、提案された唯一の解決策はクラッジのようです。

4

1 に答える 1

0

私はRestTemplateクラスに精通していませんが、中断できないブロッキング呼び出しがあるようです。これは、futureをキャンセルしたり、スレッドを中断したりしても効果がないことを意味します。この場合に私が知っている唯一の解決策は、非推奨のThread.terminate()メソッドを使用してスレッドを強制終了することです。オブジェクトが無効な状態になる可能性があるため、これを行うには非常に注意する必要があることに注意してください。

于 2012-11-16T19:15:21.410 に答える