有个线程每隔一定时间扫描是否有任务需要提醒。(如有3个任务,时间分别为T1,T2,T3)
则在线程中每个一定的时间取出当前的系统时间,然后根T1,T2,T3对比,看是否当前时间等于T1,T2,T3的一个,有就提醒。
public class RemindThread implements Runnable {
public void run() {
while (true) {
Calendar c= Calendar.getInstance();
// 循环任务列表
for (int i=0;i
// 你可以在Task中增加一个方法,判断任务是否等于当前系统时间。参数为当前系统时间,你将Calendar参数传进去。比如方法是public boolean isStart(Calendar c) {...},在方法中
// 获取年,月,日,时,分,秒
// 请使用Calendar的get(int field)方法获取,如获取年:c.get(Calendar.YEAR);
// 根你的任务时间对比。
// 那么这里你就可以这样。
if (task.isStart(c)) {
task.remind(); // 调用任务的提醒方法。
}
Thread.sleep(1000); // 1s检测1次。
}
}
}
ps:未处理异常。
}
运用相关类Data Calendar DateFormat SimpleDataFormat可以取得系统日期,利用线程让它动起来就可以了,可以再设置定时更新保持准确性
jdk提供了一个calendar借口,可以直接取得系统时间