我已经阅读了很多有关使用Timer的答案。我试图了解如何将日期(或者我不能?)传递给具有两种形式的方法scheduleAtFixedRate:
1)void sheduleAtFixedRate(TimerTask task, long delay, long period)
2)void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
(我现在是指这张表格)
我正在使用第二种形式,例如:
//creating a new instance of timer class
Timer timer = new Timer();
TimerTask task = new Helper();
Date date = new Date();
timer.scheduleAtFixedRate(task, date, 5000);
在使用date
且未指定任何值的情况下。但是,在此示例中,我可以指定日期吗?纠正我,如果我错了,请。
答案 0 :(得分:1)
您似乎对javadoc感到困惑。
只有{em>一个原因使用Date
相关代码:
所有计划方法都接受相对延迟和时间段作为参数,而不是绝对时间或日期。将代表日期的绝对时间转换为所需的形式很简单。例如,要安排在将来的某个特定日期,可以使用:schedule(task,date.getTime()-System.currentTimeMillis(),TimeUnit.MILLISECONDS)。
换句话说:当您打算设置日期对象以表示2018年8月1日,并且您希望代码在当天的 运行时,可以使用上面的代码来做到这一点。
换句话说:您使用日期算术来计算 延迟,以使任务在特定的日期/时间开始。
请非常清楚:问题(timer.scheduleAtFixedRate(task, date, 5000);
中您自己的代码示例,此代码无效!
该类中没有否方法,该方法直接采用 Date 对象。所有方法仅接受长值,代表初始延迟!