我的记录器类中有计时器问题。我创建了自己的记录器,它应该尽可能简单 - 用户只能调用静态log()方法。每个调用log()方法都会导致日志对象(消息,时间,附加信息)添加到日志列表中 当用户第一次调用此方法 时,logger还会启动一个新的Timer,它会每隔30秒将列表中的所有日志保存到文件中。
但是,我不知道在哪里调用timer.cancel()方法。我不想强迫用户在他的代码中执行此操作。是否有必要一直取消计时器?或者这种方法只是在用户需要时停止。
答案 0 :(得分:1)
答案 1 :(得分:1)
但在这种情况下你根本不需要关机钩子。当VM关闭时,所有线程都将被取消,所有打开的文件都将被关闭,所以不用担心。
我相信你想要的是避免任务每30秒连续醒来,即使应用程序没有做任何事情。我建议做一点不同的事情:
每当你在log方法中记录一些东西时:
请注意。为了避免竞争,您还需要在日志读/写上进行一些同步。