亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java 定時器(Timer,TimerTask)詳解及實例代碼

 更新時間:2017年01月11日 11:48:29   投稿:lqh  
這篇文章主要介紹了 Java 定時器(Timer,TimerTask)詳解及實例代碼的相關資料,需要的朋友可以參考下

 Java 定時器

在JAVA中實現(xiàn)定時器功能要用的二個類是Timer,TimerTask

Timer類是用來執(zhí)行任務的類,它接受一個TimerTask做參數(shù)

Timer有兩種執(zhí)行任務的模式,最常用的是schedule,它可以以兩種方式執(zhí)行任務:1:在某個時間(Data),2:在某個固定的時間之后(int delay).這兩種方式都可以指定任務執(zhí)行的頻率,本文有二個例子,一個是簡單的一個是用了內(nèi)部類

1.簡單實例

  先寫一個類

public class TimeTest {
public static void main(String[] args) {
  
   Timer timer = new Timer();
   timer.schedule(new MyTask(),1000,2000);
}

然后再寫個類

public class MyTask extends TimerTask{

  @Override
  public void run() {
 System.out.println("開始運行");    
  }
}

這樣就可以完成一個簡單的定時器,但是還有一種方法就是把這二個類寫入到一個類中,也就是內(nèi)部類了

2.內(nèi)部類

public class SerchRun {

  protected static void startRun(){
    Timer timer = new Timer();
     TimerTask task =new TimerTask(){
       public void run(){
         System.out.println("開始運行"); //在這寫你要調(diào)用的方法
       }
     };
   timer.scheduleAtFixedRate(task, new Date(),2000);//當前時間開始起動 每次間隔2秒再啟動
   // timer.scheduleAtFixedRate(task, 1000,2000); // 1秒后啟動 每次間隔2秒再啟動         
   }
  
  public static void main(String[] args) {
   SerchRun.startRun();
  }
}

 schedule和scheduleAtFixedRate的區(qū)別在于,如果指定開始執(zhí)行的時間在當前系統(tǒng)運行時間之前,scheduleAtFixedRate會把已經(jīng)過去的時間也作為周期執(zhí)行,而schedule不會把過去的時間算上。

比如:

SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date d1 = fTime.parse("2005/12/30 14:10:00");
 
 t.scheduleAtFixedRate(new TimerTask(){
  public void run()
  {
    System.out.println("this is task you do6");
  }
 },d1,3*60*1000);

間隔時間是3分鐘,指定開始時間是2005/12/30 14:10:00,如果我在14:17:00分執(zhí)行這個程序,那么會立刻打印3次

this is task you do6   //14:10
this is task you do6   //14:13
this is task you do6   //14:16

并且注意,下一次執(zhí)行是在14:19 而不是 14:20。就是說是從指定的開始時間開始計時,而不是從執(zhí)行時間開始計時。

但是上面如果用schedule方法,間隔時間是3分鐘,指定開始時間是2005/12/30 14:10:00,那么在14:17:00分執(zhí)行這個程序,則立即執(zhí)行程序一次。并且下一次的執(zhí)行時間是 14:20,而不是從14:10開始算的周期(14:19)。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • SpringBoot解析JSON數(shù)據(jù)的三種方案

    SpringBoot解析JSON數(shù)據(jù)的三種方案

    JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,同時也易于機器解析和生成,本文給大家介紹了SpringBoot解析JSON數(shù)據(jù)的三種方案,需要的朋友可以參考下
    2024-03-03
  • 解決安裝mysqlclient的時候出現(xiàn)Microsoft Visual C++ 14.0 is required報錯

    解決安裝mysqlclient的時候出現(xiàn)Microsoft Visual C++ 14.0 is required報錯

    這篇文章主要介紹了解決安裝mysqlclient的時候出現(xiàn)Microsoft Visual C++ 14.0 is required報錯問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Java實現(xiàn)生成pdf并解決表格分割的問題

    Java實現(xiàn)生成pdf并解決表格分割的問題

    這篇文章主要為大家詳細介紹了如何利用Java實現(xiàn)生成pdf,并解決表格分割的問題,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • java獲取http請求的Header和Body的簡單方法

    java獲取http請求的Header和Body的簡單方法

    下面小編就為大家?guī)硪黄猨ava獲取http請求的Header和Body的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 如何用java計算兩個時間相差多少小時

    如何用java計算兩個時間相差多少小時

    最近工作中遇到需要計算時間差,下面這篇文章主要給大家介紹了關于如何用java計算兩個時間相差多少小時的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 如何解決Gradle、Maven項目build后沒有mybatis的mapper.xml文件的問題

    如何解決Gradle、Maven項目build后沒有mybatis的mapper.xml文件的問題

    這篇文章主要介紹了如何解決Gradle、Maven項目build后沒有mybatis的mapper.xml文件的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Scala異常處理的方法深入分析

    Scala異常處理的方法深入分析

    Scala是一種多范式的編程語言,支持面向?qū)ο蠛秃瘮?shù)式編程。Scala也支持異常處理,即在程序運行過程中發(fā)生意外或錯誤時,采取相應的措施
    2023-04-04
  • Spring學習JdbcTemplate數(shù)據(jù)庫事務參數(shù)

    Spring學習JdbcTemplate數(shù)據(jù)庫事務參數(shù)

    這篇文章主要為大家介紹了Spring學習JdbcTemplate數(shù)據(jù)庫事務參數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • SpringCloud微服務架構(gòu)實戰(zhàn)之微服務治理功能的實現(xiàn)

    SpringCloud微服務架構(gòu)實戰(zhàn)之微服務治理功能的實現(xiàn)

    這篇文章主要介紹了SpringCloud微服務架構(gòu)實戰(zhàn)之微服務治理,這些治理工具主要包括服務的注冊與發(fā)現(xiàn)、負載均衡管理、動態(tài)路由、服務降級和故障轉(zhuǎn)移、鏈路跟蹤、服務監(jiān)控等,需要的朋友可以參考下
    2022-02-02
  • SpringBoot項目啟動時預加載操作方法

    SpringBoot項目啟動時預加載操作方法

    Spring Boot是一種流行的Java開發(fā)框架,它提供了許多方便的功能來簡化應用程序的開發(fā)和部署,這篇文章主要介紹了SpringBoot項目啟動時預加載,需要的朋友可以參考下
    2023-09-09

最新評論