java设置一个计时器 - 每天早晚

时间:2013-04-11 04:20:34

标签: java timer intervals

我需要在每天早上8点和晚上8点运行一个方法,这样就可以用Java计时器了。如何为这种情况设置计时器。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

有很多库可以满足您的需求,请以cron4j为例。

答案 2 :(得分: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次迭代运行一次。

答案 3 :(得分:1)

您可以安排TimerTask在每小时的顶部运行,并在日历的帮助下检查它是否为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点运行