有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的定时闹钟

我想制作一个程序,在未来的某个时间,例如今晚5点,弹出一个窗口。基本上,该程序是一个约会、会议等的提醒/通知系统

我的第一反应是创建一种“时钟监听器”,每分钟左右检查一次计算机的时间,看看currentTime==alarmTime。然而,我不知道这是否会占用太多资源,或者让你的程序不断地做这样的事情是一种不好的做法。此外,为了让闹钟准确,我认为它需要每秒检查一次,而不是每分钟检查一次(因为如果它不检查秒数,并且会在5:00:xx发出,它可能会在5:00:59发出,这对一些人来说可能太晚了)。是不是每秒都在看时钟太多了

我的第二个想法是,当程序开始运行时,计算闹钟设置为关闭的时间(比如,五小时后)。然后,等五个小时,然后拉响警报。但后来我想,虽然不太可能,但用户有可能改变电脑的时间,然后闹钟会在错误的时间响。所以这真的不管用

我见过一些使用线程的解决方案,但我对它们还不熟悉,所以我宁愿不使用它们

我倾向于第一种解决方案,但我想确保它是有效的,不会减慢其他程序。也许我想得太多了,检查时钟是一个微不足道的操作,但我只是想确保我没有做错任何事情


共 (2) 个答案

  1. # 1 楼答案

    睡眠解决方案非常简单,但使用^{}并不难,它为您扩展多个报警等实用程序提供了一种明确的方法。假设您要使用Swing来显示通知,请注意TimerTask将需要在Swing事件线程上执行一些工作^{}会帮你的

  2. # 2 楼答案

    第一个解决方案是可以的。醒来、查看时间和重新入睡应该根本不是问题。如果你想,你可以每秒钟检查一次,但是如果你只需要1分钟的分辨率,那么每30秒检查一次就足够了

    第二种方法存在您已经概述的问题。如果您只在剩余的时间内进入睡眠状态,而用户更改了时间(或通过其他方式更改了时间,例如与时间服务器同步),则警报将在错误的时间发出。如果可以注册某种钩子,以便在系统时间发生变化时调用程序,就可以避免这种情况,但在Java中很难做到这一点