java裡面定時器

2021-09-12 09:18:00 字數 1081 閱讀 1887

jdk中的timer 是乙個非常早期的類,在1.2中就引入了。現在看來,不算乙個很好的設計。

timer timer = new timer();

timer.schedule(new mytimertask(),1000,10);

其中mytimertask 是乙個實現timertask的類,主要是實現run 方法。

timer中有2個核心類,乙個是timer,乙個timertask

前者主要是定義定時任務什麼時候執行,後者主要是定義具體定時任務。

timer

public class timer
其中taskqueue 是使用陣列實現的乙個簡易的堆,另外乙個值得注意的屬性是 timerthread

timer使用唯一的執行緒負責輪詢並執行任務。timer的優點在於簡單易用,但也因為所有任務都是由同乙個執行緒來排程,因此整個過程是序列執行的,同一時間只能有乙個任務在執行,所以在任務量多的情況下不方便使用。

1.timer 只能被單執行緒排程

2.timertask **現的異常會影響到timer 的執行

由於這兩點缺陷,jdk1.5 支援了新的定時器方案 scheduledexecutorservice。

public static void main(string args) 

},1, 1, timeunit.seconds);

}

相比timer,scheduledexecutorservice 解決了同乙個定時器排程多個任務的阻塞問題,並且任務異常不會中斷 scheduledexecutorservice。

scheduledexecutorservice 提供了2種常用的週期排程方法 scheduleatfixedrate 和 schedulewithfixeddelay。

scheduleatfixedrate 基於固定時間間隔進行任務排程,schedulewithfixeddelay 取決於每次任務執行的時間長短,是基於不固定時間間隔的任務排程。

scheduledexecutorservice 底層使用的資料結構為 priorityqueue。

java中定時器

void cancel 終止此計時器,丟棄所有當前已安排的任務。int purge 從此計時器的任務佇列中移除所有已取消的任務。void schedule timertask task,date time 安排在指定的時間執行指定的任務。void schedule timertask task,da...

JAVA 定時器時間格式

格式 秒 分 小時 日 月 周 年 序號 說明 是否必填 允許填寫的值 允許的萬用字元 1 秒 是0 59 2 分 是0 59 3 小時 是 0 23 4 日 是1 31 lw 5 月 是1 12 orjan dec 6 周 是1 7 orsun sat l 7 年 否empty 或1970 209...

Java定時器和Quartz

自定義乙個定時器 author lw public class mytimer extends thread override public void run catch interruptedexception e send 開始執行任務 public void execute 定時任務 priv...