1窍荧、java中普通定時(shí)任務(wù)
Timer定時(shí)器
// Timer 和 TimerTask是java.util兩個(gè)類
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("aaa");
}
}, 2000, 40);
// schedule(TimerTask task, long delay, long period)
// 第一個(gè)參數(shù):要執(zhí)行的任務(wù)
// 第二個(gè)參數(shù):任務(wù)執(zhí)行前的延遲 (單位:ms)
// 第三個(gè)參數(shù):連續(xù)任務(wù)執(zhí)行之間的時(shí)間間隔 (單位:ms)
ScheduledThreadPoolExecutor 定時(shí)器
// ScheduledThreadPoolExecutor定時(shí)器可以設(shè)置線程池的大小,該類extends ThreadPoolExecutor implements ScheduledExecutorService
ScheduledThreadPoolExecutor scheduled = new ScheduledThreadPoolExecutor(2);
scheduled.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}, 1000, 1000, TimeUnit.MILLISECONDS);
// scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
// 參數(shù)1: 執(zhí)行的任務(wù)
// 參數(shù)2: 任務(wù)執(zhí)行前的延遲
// 參數(shù)3: 連續(xù)任務(wù)執(zhí)行之間的時(shí)間間隔
// 參數(shù)4: 前面兩個(gè)時(shí)間的單位
Timer定時(shí)器與ScheduledThreadPoolExecutor 定時(shí)器比較
1、Timer只創(chuàng)建一個(gè)線程,當(dāng)任務(wù)的執(zhí)行時(shí)間超出設(shè)置間隔的時(shí)間可能會(huì)有問(wèn)題
2、Timer創(chuàng)建的線程沒(méi)有處理異常,因此一旦拋出非受檢異常,該線程會(huì)立即終止
3路召、在頻繁處理時(shí)間間隔的時(shí)候ScheduledThreadPoolExecutor的誤差更小