Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中实现异步工作_Java_Spring - Fatal编程技术网

如何在java中实现异步工作

如何在java中实现异步工作,java,spring,Java,Spring,我有一个java程序,它处理一些业务数据并返回响应。但作为备份这些数据的一部分,我想实现另一种方法,在这种方法中,它将数据交付给该方法并异步备份,这样客户机就不必等待备份操作完成。有人能提出更好的实施方法吗?我们达到了100多个请求/秒,所有处理的数据也需要备份。我想您可以使用java.util.concurrent.ExecutorService您应该使用java.util.concurrent.ExecutorService来实现这些功能。它将使您能够更好地控制线程池大小以及超时和等待等其他

我有一个java程序,它处理一些业务数据并返回响应。但作为备份这些数据的一部分,我想实现另一种方法,在这种方法中,它将数据交付给该方法并异步备份,这样客户机就不必等待备份操作完成。有人能提出更好的实施方法吗?我们达到了100多个请求/秒,所有处理的数据也需要备份。

我想您可以使用
java.util.concurrent.ExecutorService

您应该使用
java.util.concurrent.ExecutorService
来实现这些功能。它将使您能够更好地控制线程池大小以及超时和等待等其他方面。

Spring3.0
@Async
允许您异步运行任务。按照此链接了解有关Spring异步任务用法的更多信息:


< P>听起来,你需要认真考虑使用JMS(黄蜂)或AMQP(RabByMQ)等消息队列技术。

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


在通知客户机方面,请查看t.

如果您使用的是Spring 3,那么可以在异步操作上使用@Async注释。请参阅了解一些想法。请提供更多详细信息,如软件版本(java、spring等)。这将有助于准确地回答您的查询。executorService的问题是关闭,因为处理请求的主线程已返回响应。executor仍在做后台工作,一旦完成,我想关闭它,这样就没有线程处于活动状态,因为我认为这可能会在prod应用程序中引起一些问题。我在这种情况下是正确的吗?