實現定時任務線程有如下三種方式:
①普通線程死循環
/**
* 普通thread
* 這是最常見的,創建一個thread,然后讓它在while循環里一直運行着,
* 通過sleep方法來達到定時任務的效果,這樣可以快速簡單的實現
*/
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
System.out.println("普通線程執行中......");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
②使用定時器timer
/**
* 與第一種方式相比:
* 優勢 1:當啟動和取消任務時可以控制
* 優勢 2:第一次執行任務時可以指定你想要的delay時間
* 在實現時,Timer類可以調度任務,TimerTask則是通過在run()方法里實現具體任務。
* Timer實例可以調度多任務,它是線程安全的。
*
*/
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("timer線程執行中......");
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(task, 5000, 1000);
③使用定時調度線程池ScheduledExecutorService
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("定時任務線程執行中......");
}
};
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleWithFixedDelay(runnable, 5000, 500, TimeUnit.MILLISECONDS);
