JAVA中的异步编程

JAVA中的异步编程,java,asynchronous,Java,Asynchronous,我正在处理一个服务,在这个服务中我必须执行一些事件,记录它们并返回结果。我希望用户不应该等待日志记录完成,因此应该立即得到结果,而日志记录可以继续。有什么建议吗 a() b() . . . g()//all these function are required to compute somethings which user wants logging() //it takes time return results 如果日志记录对您来说是一种开销,并且您希望它是一个异步过程,那么肯定有一些

我正在处理一个服务,在这个服务中我必须执行一些事件,记录它们并返回结果。我希望用户不应该等待日志记录完成,因此应该立即得到结果,而日志记录可以继续。有什么建议吗

a()
b()
.
.
.
g()//all these function are required to compute somethings which user wants
logging() //it takes time
return results

如果日志记录对您来说是一种开销,并且您希望它是一个异步过程,那么肯定有一些方法可以实现这一点:

  • 您可以创建自己的处理程序来执行此操作,即创建一个FIFO队列以提交所有日志字符串,另一个进程可以作为单独的进程读取和打印这些消息,因此在原始流程中,您只需将日志消息添加到队列中并继续前进,当然这需要重新设计轮子,但是你有自由去做你的项目所需要的事情。 你可能想看看这个
  • 您可以利用现有的框架,比如log4j,它提供了许多选项来使用特定的异步附加器实现异步日志记录。 你可以找到它的细节

  • 您使用的是什么框架,您尝试过什么解决方案,是桌面应用程序还是web应用程序?您可以将日志记录作为单独的任务提交给另一个线程(或执行器服务,它会立即返回控件)