如何在Java中实现异步应用程序

时间:2015-03-13 05:33:21

标签: java asynchronous

因此,让我首先明确要求

  1. 我正在创建一个Java Server端应用程序,它有几个REST API。现在我想收集统计信息并在通过HTTP
  2. 调用API时进行一些日志记录
  3. 现在,记录和收集/持久化统计信息会降低API调用的速度,因此我希望这种情况异步发生,因此可以继续执行API。
  4. 那么什么解决方案最适合这个?我想确保没有数据丢失,并且解决方案也可以随负载扩展。我想到了Akka框架,但不确定它是否符合我的要求。创建简单的线程来完成工作可能无法扩展。是否有任何标准的Java解决方案/模式?

1 个答案:

答案 0 :(得分:0)

  • 实现具有固定线程数的线程池(无论什么是最佳的)
  • 创建具有所需详细信息的自定义对象w。
  • 有一个可以容纳这些自定义对象的队列
  • 每当调用API时,创建这些对象并将它们放在队列
  • 线程应该在队列上等待,如果为空,则将这些任务(自定义对象)出列,并异步执行日志记录。
  • 工作完成后,不要杀死这些线程。在线程内部有一个while()循环,以便它可以在队列上再次等待以使另一个任务出列并执行它。