我需要在每天早上8点和晚上8点运行一个方法,这样就可以用Java计时器了。如何为这种情况设置计时器。
答案 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点运行