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