Java 并发安全工作池队列

Java concurrent safe worker pool queue

我正在编写 Spring (Java 8) 网络应用程序,每个请求(单独的线程)我的应用程序都会执行一些任务,这些任务应该尽快完成 return 结果在浏览器中发送给客户端,所以我想找到可以从不同线程以安全方式访问的工作池库。

我读过有关执行池、Rabbit MQ 的信息,但我找不到有关从不同线程访问任务队列的功能的信息。

如果有人能在 Java 中给我建议,我将不胜感激。

这里可以通过@Async注解使用Spring支持的异步方法调用。

@Async 注解的方法将在新线程中执行,结果将在 Future 对象中可用(void return 也是支持)。请注意,方法调用是 非阻塞,这将有助于 return 快速响应,而无需等待每个任务完成。但是,如果需要,可以让主线程等待所有任务,即 Future 通过阻塞的 Future.get() 完成。

要配置异步支持,请使用 @EnableAsync 注释配置 class 并提供以下方法定义,如 here 所述。

public Executor getAsyncExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(2);
    executor.setMaxPoolSize(2);
    executor.setQueueCapacity(500);
    executor.initialize();
    return executor;
}