如何在java中实现异步工作

时间:2013-09-28 15:35:19

标签: java spring

我有一个java程序处理一些业务数据并且必须返回响应。但作为备份这些数据的一部分,我想实现另一种方法,即将该数据传递给该方法并异步备份,以便客户端不必等待该备份操作完成。有人可以提出更好的实现方法吗?我们要达到100 req / s以上,所有处理的数据也需要备份。

4 个答案:

答案 0 :(得分:1)

我猜你可以使用java.util.concurrent.ExecutorService

答案 1 :(得分:0)

您应该使用java.util.concurrent.ExecutorService来实现此类功能。它将为您提供更好的控制线程池大小和其他方面,如超时和等待。

答案 2 :(得分:0)

Spring 3.0 @Async允许您异步运行任务。请点击此链接以了解有关Spring Asynch任务使用的更多信息:

http://java-success.blogspot.in/2013/05/asynchronous-processiong-with-spring.html

答案 3 :(得分:0)

听起来你需要认真考虑使用一些消息队列技术,如JMS(Hornet)或AMQP(RabbitMQ)。

@Async很适合做小事,但它不能扩展,也不是普通的ExecutorService。更不用说你的问题甚至听起来更像是一个消息问题,而不是一个简单的任务执行(备份和客户端通知)。 MQ理论/实践/实现需要一些阅读,所以我建议您查看Spring AMQP / JMS和一般消息队列文档。

在通知客户方面,请查看new spring mvc DeferredResul t。