我需要在每天早上 8 点和晚上 8 点运行一个方法,因为这种想法与 Java 计时器有关。如何为这种情况设置计时器。
问问题
617 次
4 回答
2
使用 Timer 类。
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 8);
Timer timer = new Timer();
timer.schedule(new RemindTask(), calendar.getTime());
class RemindTask extends TimerTask {
public void run() {
}
}
在类似的行中,您也可以为晚上时间创建另一个计时器。另一种选择是使用单一计时器,开始时间是早上 8 点,间隔时间是 12 小时。
您还可以使用其他库进行调度,例如Quartz Scheduler。
于 2013-04-11T04:28:46.190 回答
1
有很多库可以满足您的需求,以cron4j为例。
于 2013-04-11T04:28:30.310 回答
1
您可以使用如下函数定期检查时间:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class currentTime {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println( sdf.format(cal.getTime()) );
}
}
所以有一个计数器,每 x 次迭代运行一次。
于 2013-04-11T04:29:27.393 回答
1
您可以安排 TimerTask 在每小时的顶部运行,并在 Calendar 的帮助下检查它是否为 8
long hour = 3600 * 1000;
new Timer().scheduleAtFixedRate(new TimerTask() {
public void run() {
if (Calendar.getInstance().get(Calendar.HOUR) == 8) {
// run
}
}
}, new Date(System.currentTimeMillis() / hour * hour), hour);
即使切换到夏令时,它也会在 8 点运行
于 2013-04-11T04:40:07.893 回答