通過java定時抓取百度實時熱點

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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章