我正在编写Spring(Java 8)Web应用程序,并根据每个请求(单独的线程)我的应用程序做了一些任务,应该尽快完成,以便在浏览器中将结果返回给客户端,所以我就这样做了喜欢找工作池库,可以安全地从不同的线程访问。
我已阅读有关执行池,Rabbit MQ的信息,但我无法找到有关从不同线程访问任务队列的功能的信息。
如果有人能给我建议如何用Java做这件事,我将非常感激。
答案 0 :(得分:1)
在这里,您可以通过@Async
注释使用Spring支持的异步方法调用。
@Async
带注释的方法将在新线程中执行,结果将在Future
对象中可用( void
也支持返回)。请注意,方法调用是非阻塞,这将有助于快速返回响应,而无需等待每个任务完成。但是,如果需要,可以使主线程等待所有任务,即Future
通过阻塞的Future.get()
完成。
要配置异步支持,请使用@EnableAsync
注释配置类,并按照here所述提供以下方法定义。
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(500);
executor.initialize();
return executor;
}