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;
}
我正在编写 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;
}