1.通過線程的方法
import java.text.SimpleDateFormat;
/**
* Created by hua on 2019/3/31.
*/
public class test {
public static void main(String[] args) {
Thread t = new Thread(){
public void run(){
time_on();
}
};
t.start();
}
public static void time_on(){
while(true){
try{
Thread.sleep(100);
SimpleDateFormat data = new SimpleDateFormat();
System.out.println("執行時間"+data);
}catch (Exception e){
}
}
}
}
2.可以通過java的Timer類來進行定時調用
創建DataTimerTask類繼承TimerTask 並重寫run方法
public class DataTimerTask extends TimerTask {
public void run() {
try {
Day01_BaiduNewsCrawler.function();
} catch (Exception e) {
}
}
}
定時每天下午抓取百度實時熱點
//時間間隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;//一天
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
/*** 定製執行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 16);
calendar.set(Calendar.MINUTE, 34);
calendar.set(Calendar.SECOND, 0);
Date date = calendar.getTime(); //定時任務的時間
Timer timer = new Timer();
DataTimerTask task = new DataTimerTask();
timer.schedule(task,date,PERIOD_DAY);
}
總結Timer類的其他方法
1、這個方法是調度一個task,經過delay(ms)後開始進行調度,僅僅調度一次。
public void schedule(TimerTask task, long delay)
2、在指定的時間點time上調度一次。
public void schedule(TimerTask task, Date time)
3、這個方法是調度一個task,在delay(ms)後開始調度,每次調度完後,最少等待period(ms)後纔開始調度。
public void schedule(TimerTask task, long delay, long period)
4、和上一個方法類似,唯一的區別就是傳入的第二個參數爲第一次調度的時間。
public void schedule(TimerTask task, Date firstTime, long period)