2

我在 Spring MVC 的 al web 请求中启动了一个长进程,如果线程需要很长时间,我想终止它。如果 Spring 控制器中的线程太长,是否有设置最大时间来杀死线程?这是最好的方法还是有其他更好的方法来做到这一点?我在这里读到,如果没有线程的协作,应用程序服务器不能杀死线程。

我找到了 Guava TimeLimiter,但不知道如何使用它。

谢谢。

4

1 回答 1

0

最后,我用 Timelimiter 做到了:

        TimeLimiter limiter = new SimpleTimeLimiter();
        limiter.callWithTimeout(new Callable<String>() {
            @Override
            public String call() throws IOException {
                return mymethod ();
            }
          }, timelimit, TimeUnit.SECONDS, false);

如果方法花费的时间超过时间限制,则抛出UncheckedTimeoutException必须管理的异常。

于 2016-03-11T08:25:01.373 回答