我有一个守护程序,它处理一些记录,并在其内存中有一些stored_data
。我想根据发生的一些事件不断更新数据。
我知道我必须使用后台线程,它会将更改更新回主内存中的stored_data
。但是如何将数据传递给线程?
目前我所知道的方式是: 1)将后台线程公开为将公开add apis的服务 2)让后台线程轮询一个特定的位置,该位置应该是记录添加内容的常用位置,并从那里进行选择。
如果那是正确的,请告诉我。感谢。
答案 0 :(得分:1)
当你想到" polling"或者"按时间间隔更新",使用ScheduledExecutorService执行"检查数据更新"定期任务。您不需要守护程序线程来执行此操作,并且根据我的经验,使用计划任务可以使代码更易于维护。例如。在这种情况下,它将stored_data
与线程分开,这是一件好事,因为线程不拥有数据(数据包含在不必是线程的对象中,例如,您可以传递stored_data
变量到线程执行的Runnable
。
当您认为"事件驱动"时,守护程序线程是合适的,因为它将在事件发生时立即处理(无延迟)。您可以决定让守护程序线程为事件执行工作,或者为事件创建任务,并让ExecutorService执行这些任务,如CachedThreadPool。看看" Watching a directory"有关如何接收此类守护程序线程的文件系统事件的教程。