我可以使用类Timer将日期传递给scheduleAtFixedRate方法吗?

时间:2018-07-20 13:30:28

标签: java timer

我已经阅读了很多有关使用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且未指定任何值的情况下。但是,在此示例中,我可以指定日期吗?纠正我,如果我错了,请。

1 个答案:

答案 0 :(得分:1)

您似乎对javadoc感到困惑。

只有{em>一个原因使用Date相关代码:

  

所有计划方法都接受相对延迟和时间段作为参数,而不是绝对时间或日期。将代表日期的绝对时间转换为所需的形式很简单。例如,要安排在将来的某个特定日期,可以使用:schedule(task,date.getTime()-System.currentTimeMillis(),TimeUnit.MILLISECONDS)。

换句话说:当您打算设置日期对象以表示2018年8月1日,并且您希望代码在当天的 运行时,可以使用上面的代码来做到这一点。

换句话说:您使用日期算术来计算 延迟,以使任务在特定的日期/时间开始。

请非常清楚:问题(timer.scheduleAtFixedRate(task, date, 5000);中您自己的代码示例,此代码无效!

该类中没有方法,该方法直接采用 Date 对象。所有方法仅接受长值,代表初始延迟