如何使用异步线来调整 /分析线程池配置



使用servlet 3.0,我们可以创建异步操作的任务,允许将请求返回到容器中,现在可以使用它来处理另一个请求。如果我们使用线程池来配置可用于异步请求的线程数,那么应该如何调整该线程/我们应该考虑的参数是什么?

也可以告诉Spring从forkjoin池中抓住线程,然后进行这样的处理:(取自本教程:

    logger.info("Request received");
    DeferredResult<String> deferredResult = new DeferredResult<>();
    CompletableFuture.supplyAsync(taskService::execute)
        .whenCompleteAsync((result, throwable) -> deferredResult.setResult(result));
    logger.info("Servlet thread released");

什么时候应该这样做与Callable进行托管线程池的方法?看来唯一的区别是,在一种情况下,我们可能要配置Java 8s Communpool和Spring Boot会从那里抓住线程以进行上述类型的可完成的FUTURE处理,而在另一种情况下,似乎我们将配置某种类型的类型春季执行人员服务。似乎没有区别在于方法吗?

在第一部分中,我建议您查看第8章。应用"实践中的Java并发"书籍的线程池。

对于第二部分 - 是的,弹簧使用提供的线程池单独执行可召唤任务,而deferredresult则应通过应用程序处理。它提供了更多的控件,例如,应用程序可以在运行时决定是否应基于某些元数据在单独的线程中运行特定的计算。deferredresult还支持回调。

最新更新