我有一个守护程序,它处理一些记录并在其内存中包含一些stored_data。我想根据发生的一些事件不断更新数据。

我知道我必须使用后台线程,该后台线程会将更改更新回我主内存中的stored_data。但是如何将数据传递给线程?

目前我所知道的方式是:
1)将后台线程作为服务公开,将公开添加API
2)使后台线程轮询某个位置,该位置应该是记录添加内容的常见位置,然后从那里进行选择。

让我知道那是否正确。谢谢。

最佳答案

当您认为“轮询”或“定期更新”时,请使用ScheduledExecutorService定期执行“检查数据更新”任务。您不需要守护程序线程来执行此操作,并且根据我的经验,使用计划任务可以使代码更易于维护。例如。在这种情况下,它将stored_data与线程分开是一件好事,因为线程不拥有数据(数据包含在不一定是线程的对象中,例如,您可以将stored_data变量传递给由线程执行)。

当您认为“事件驱动”时,守护程序线程是适当的,因为它会在事件发生后立即对其进行处理(没有延迟)。您可以决定让守护程序线程为事件做工作,或为事件创建任务,然后让这些任务由ExecutorService(如CachedThreadPool)执行。查看有关如何接收此类守护程序线程的文件系统事件的“ Watching a directory”教程。

关于java - 在守护程序中更新变量-Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21184541/

10-12 05:15