我在 Spring MVC 的 al web 请求中启动了一个长进程,如果线程需要很长时间,我想终止它。如果 Spring 控制器中的线程太长,是否有设置最大时间来杀死线程?这是最好的方法还是有其他更好的方法来做到这一点?我在这里读到,如果没有线程的协作,应用程序服务器不能杀死线程。
我找到了 Guava TimeLimiter,但不知道如何使用它。
谢谢。
我在 Spring MVC 的 al web 请求中启动了一个长进程,如果线程需要很长时间,我想终止它。如果 Spring 控制器中的线程太长,是否有设置最大时间来杀死线程?这是最好的方法还是有其他更好的方法来做到这一点?我在这里读到,如果没有线程的协作,应用程序服务器不能杀死线程。
我找到了 Guava TimeLimiter,但不知道如何使用它。
谢谢。
最后,我用 Timelimiter 做到了:
TimeLimiter limiter = new SimpleTimeLimiter();
limiter.callWithTimeout(new Callable<String>() {
@Override
public String call() throws IOException {
return mymethod ();
}
}, timelimit, TimeUnit.SECONDS, false);
如果方法花费的时间超过时间限制,则抛出UncheckedTimeoutException
必须管理的异常。