定时任务的实现有3种方式:①while死循环 ②linux crontab ③Java TimerTask
以后补充
③还有一种不精确的方法是TimerTask。
1 TimerTask task = new TimerTask() { 2 @Override 3 public void run() { 4 //do something 5 } 6 }; 7 Timer t = new Timer(); 8 t.scheduleAtFixedRate(task, 60000, 60000);
对scheduleAtFixedRate方法的解释:Timer.class的源码是这样写的。
long delay是启动这个定时任务的延迟:System.currentTimeMillis()+delay;
long period是between successive task executions.成功执行后,过period时间,再次执行一次定时任务。
1 /* 2 * @param task task to be scheduled. 3 * @param delay delay in milliseconds before task is to be executed. 4 * @param period time in milliseconds between successive task executions. 5 * @throws IllegalArgumentException if <tt>delay</tt> is negative, or 6 * <tt>delay + System.currentTimeMillis()</tt> is negative. 7 * @throws IllegalStateException if task was already scheduled or 8 * cancelled, timer was cancelled, or timer thread terminated. 9 */ 10 public void scheduleAtFixedRate(TimerTask task, long delay, long period) { 11 if (delay < 0) 12 throw new IllegalArgumentException("Negative delay."); 13 if (period <= 0) 14 throw new IllegalArgumentException("Non-positive period."); 15 sched(task, System.currentTimeMillis()+delay, period); 16 }