最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解JAVA Timer和TimerTask

 更新時(shí)間:2020年07月31日 09:37:49   作者:看云  
這篇文章主要介紹了JAVA Timer和TimerTask的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

Timer和TimerTask可以做為實(shí)現(xiàn)線程的第三種方式,前兩中方式分別是繼承自Thread類和實(shí)現(xiàn)Runnable接口。

Timer是一種線程設(shè)施,用于安排以后在后臺(tái)線程中執(zhí)行的任務(wù)??砂才湃蝿?wù)執(zhí)行一次,或者定期重復(fù)執(zhí)行,可以看成一個(gè)定時(shí)器,可以調(diào)度TimerTask。TimerTask是一個(gè)抽象類,實(shí)現(xiàn)了Runnable接口,所以具備了多線程的能力。

一個(gè)Timer可以調(diào)度任意多個(gè)TimerTask,它會(huì)將TimerTask存儲(chǔ)在一個(gè)隊(duì)列中,順序調(diào)度,如果想兩個(gè)TimerTask并發(fā)執(zhí)行,則需要?jiǎng)?chuàng)建兩個(gè)Timer。下面來看一個(gè)簡(jiǎn)單的例子:

 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);// 兩秒后啟動(dòng)任務(wù) 
   } 
 } 

schedule是Timer調(diào)度任務(wù)的方法,Timer重構(gòu)了四個(gè)schedule方法,具體可以查看JDK API。

看一個(gè)稍復(fù)雜的例子,假設(shè)有這樣一種需求,實(shí)現(xiàn)一個(gè)連環(huán)炸彈,2秒后爆炸一次,3秒后爆炸一次,如此循環(huán)下去,這就需要?jiǎng)?chuàng)建兩個(gè)任務(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的詳細(xì)內(nèi)容,更多關(guān)于JAVA Timer和TimerTask的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

调兵山市| 内乡县| 灵璧县| 柯坪县| 石家庄市| 定结县| 荥阳市| 云林县| 乐安县| 牙克石市| 邯郸县| 铜梁县| 阜新| 定南县| 佛学| 仙桃市| 定兴县| 桂阳县| 夏河县| 昌黎县| 原平市| 漠河县| 锡林郭勒盟| 长子县| 通化县| 合阳县| 鄂托克前旗| 南漳县| 信宜市| 耒阳市| 深圳市| 禹州市| 盖州市| 财经| 临潭县| 平武县| 镇远县| 名山县| 余庆县| 泗水县| 乡宁县|