Java 我可以使用类计时器将日期传递给scheduleAtFixedRate方法吗?
我读了很多关于使用定时器的答案。我试图了解如何将日期(或我不能?)传递给有两种形式的方法: 1)Java 我可以使用类计时器将日期传递给scheduleAtFixedRate方法吗?,java,timer,Java,Timer,我读了很多关于使用定时器的答案。我试图了解如何将日期(或我不能?)传递给有两种形式的方法: 1) void scheduleatfixedrate(TimerTask任务,长延迟,长周期) 2) void scheduleAtFixedRate(TimerTask任务,第一次日期,长周期)(我现在指的是这个表单) 我用的是第二种形式,比如: //creating a new instance of timer class Timer timer = new Timer();
void scheduleatfixedrate(TimerTask任务,长延迟,长周期)
2) void scheduleAtFixedRate(TimerTask任务,第一次日期,长周期)
(我现在指的是这个表单)
我用的是第二种形式,比如:
//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
未使用任何指定值。但在本例中,我可以指定日期吗?如果我错了,请纠正我。您似乎被javadoc弄糊涂了
使用Date
相关代码的原因只有一个:
所有调度方法都接受相对延迟和周期作为参数,而不是绝对时间或日期。将表示为日期的绝对时间转换为所需的形式很简单。例如,要在未来某个日期进行计划,可以使用:schedule(task,date.getTime()-System.currentTimeMillis(),TimeUnit.millises)
换句话说:当您打算设置一个日期对象来表示2018年8月1日,并且希望代码在该日运行时,您可以使用上述代码来实现
换句话说:您使用日期算法来计算在特定日期/时间启动任务所需的延迟
只是想澄清一下:您自己的问题代码示例(timer.scheduleAtFixedRate(task,date,5000);
),此代码无效
该类中没有直接获取日期对象的方法。所有方法只接受长值,表示初始延迟 “Where date used without any specified value”是什么意思?您正在传递需要开始此操作的日期,这是您想要的,对吗?我的意思是,我可以指定日期,何时执行此方法还是否?@GhostCat,感谢您的帮助!你的回答很有帮助,但我想还是这里有相同的逻辑?只是更新了我的问题-。我考虑的是类计时器,而不是接口ScheduledExecutorService