//当天晚上23点开始执行任务,每隔1小时重复执行一次 Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, 23); Date d = c.getTime(); Timer t = new Timer(); t.schedule(new TimerTask(){ @Override public void run() { // TODO 任务内容 }
}, d, 3600 * 1000); }
java Timer足够你用了 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer;import org.apache.log4j.Logger;public class TaskTimerManager { private Timer timer; public void timerStart() { timer = new Timer(); //TimerSend2OutBound 是具体的业务实现类 TimerSend2OutBound toOutBoundTask = new TimerSend2OutBound();
// 第一次运行时间08:00:00,关于执行时间,还可有很大配置,可放在配置文件中,在网上查查 final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd '16:00:00'"); // 首次运行时间 Date firstTime; try { firstTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date())); timer.schedule(toOutBoundTask, firstTime, 60*60*1000); } catch (ParseException e) { e.printStackTrace(); } } public void cancel() { if (timer != null) { timer.cancel(); } }}
timer.schedule(task, firstTime, period);task参数是,TimerTask 类,在包:import java.util.TimerTask .使用者要继承该类,并实现 public void run() 方法,因为 TimerTask 类 实现了 Runnable 接口。firstTime参数是,用户调用 schedule() 方法后,要等待这么长的时间才可以第一次执行 run() 方法。period参数是,第一次调用之后,从第二次开始每隔多长的时间调用一次 run() 方法。import java.util.Timer; import java.util.TimerTask; public class TestTimer {
//当天晚上23点开始执行任务,每隔1小时重复执行一次
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 23);
Date d = c.getTime(); Timer t = new Timer();
t.schedule(new TimerTask(){
@Override
public void run() {
// TODO 任务内容
}
}, d, 3600 * 1000);
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;import org.apache.log4j.Logger;public class TaskTimerManager { private Timer timer; public void timerStart() {
timer = new Timer();
//TimerSend2OutBound 是具体的业务实现类
TimerSend2OutBound toOutBoundTask = new TimerSend2OutBound();
// 第一次运行时间08:00:00,关于执行时间,还可有很大配置,可放在配置文件中,在网上查查
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd '16:00:00'");
// 首次运行时间
Date firstTime;
try {
firstTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date()));
timer.schedule(toOutBoundTask, firstTime, 60*60*1000);
} catch (ParseException e) {
e.printStackTrace();
}
} public void cancel() {
if (timer != null) {
timer.cancel();
}
}}
import java.util.TimerTask;
public class TestTimer {
static Timer timer = null;
public static void main(String[] args) {
timer = new Timer();
System.out.println("-----------定时间器已经启动");
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("运行我了哦!!!");
}
}, 0, 5*1000);
}
}
private void scheduledTimeout(final Timer timer){}最简单,这个每天23执行,second = "0", minute = "0", hour = "23" ,在三个值,指定什么就是什么,
比如second = "23", minute = "12", hour = "12" 12点12分23秒,要每10分钟一次 就 second = "23", minute = "*/10", hour = "12" ,这是12点时。每10分钟一次,改hour = "*",每10分一次,
long nowTime = (Calendar.getInstance()).getTimeInMillis();
Calendar runTime = ...
runTime.set(Calendar.HOUR_OF_DAY,23);
runTime.set(....,0);时分都设置为0分0秒runt = runTime.getTimeInMillis();中间的那个参数就是: runt - nowTime。