詳解JAVA Timer和TimerTask
Timer和TimerTask可以做為實現(xiàn)線程的第三種方式,前兩中方式分別是繼承自Thread類和實現(xiàn)Runnable接口。
Timer是一種線程設(shè)施,用于安排以后在后臺線程中執(zhí)行的任務(wù)。可安排任務(wù)執(zhí)行一次,或者定期重復(fù)執(zhí)行,可以看成一個定時器,可以調(diào)度TimerTask。TimerTask是一個抽象類,實現(xiàn)了Runnable接口,所以具備了多線程的能力。
一個Timer可以調(diào)度任意多個TimerTask,它會將TimerTask存儲在一個隊列中,順序調(diào)度,如果想兩個TimerTask并發(fā)執(zhí)行,則需要創(chuàng)建兩個Timer。下面來看一個簡單的例子:
import java.util.Timer; import java.util.TimerTask; public class TimerTest { static class MyTimerTask1 extends TimerTask { public void run() {System.out.println('爆炸?。。?); } } public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new MyTimerTask1(), 2000);// 兩秒后啟動任務(wù) } }
schedule是Timer調(diào)度任務(wù)的方法,Timer重構(gòu)了四個schedule方法,具體可以查看JDK API。
看一個稍復(fù)雜的例子,假設(shè)有這樣一種需求,實現(xiàn)一個連環(huán)炸彈,2秒后爆炸一次,3秒后爆炸一次,如此循環(huán)下去,這就需要創(chuàng)建兩個任務(wù),互相調(diào)度,代碼如下:
import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class TimerTest { static class MyTimerTask1 extends TimerTask { public void run() {System.out.println('爆炸?。。?);new Timer().schedule(new MyTimerTask2(), 2000); } } static class MyTimerTask2 extends TimerTask { public void run() {System.out.println('爆炸!??!');new Timer().schedule(new MyTimerTask1(), 3000); } } public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new MyTimerTask2(), 2000); while(true) {System.out.println(new Date().getSeconds());try { Thread.sleep(1000);} catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace();} } } }
自JDK5之后,可以用ScheduledThreadPoolExecutor來替代Timer。
以上就是詳解JAVA Timer和TimerTask的詳細內(nèi)容,更多關(guān)于JAVA Timer和TimerTask的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 使用Python webdriver圖書館搶座自動預(yù)約的正確方法2. Python3 json模塊之編碼解碼方法講解3. ASP基礎(chǔ)知識VBScript基本元素講解4. python 使用事件對象asyncio.Event來同步協(xié)程的操作5. Python 合并拼接字符串的方法6. Python字符串到字節(jié)的轉(zhuǎn)換。雙反斜杠問題7. Linux刪除系統(tǒng)自帶版本Python過程詳解8. ASP.NET MVC使用jQuery ui的progressbar實現(xiàn)進度條9. Java Long類型對比分析10. Python sublime安裝及配置過程詳解

網(wǎng)公網(wǎng)安備