欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 定時器的使用示例

 更新時間:2020年09月17日 09:45:50   作者:ZJ  
這篇文章主要介紹了Java 定時器的使用,幫助大家更好的理解和使用Java time類,感興趣的朋友可以了解下

最近要用到定時任務,就是超過48小時的數(shù)據給關閉,前臺就不顯示了。還是頭一次使用java的定時器,。。java定時器使用Timer類。有時間得看下源碼了,看看具體咋弄的。

Timer主要用于Java線程里指定時間或周期運行任務。Timer是線程安全的,但不提供實時性(real-time)保證。先看看調用timer的幾種方式。

  /**
   * 這個方法是調度一個task,經過2000(ms)后開始進行調度,僅僅調度一次。
   */
  public static void timer1(){
    Timer nTimer = new Timer();
    nTimer.schedule(new TimerTask() {
      @Override
      public void run() {
        System.out.println("----設定要指定任務-----");
      }
    },2000);
  }
 
  /**
   * 在指定的時間點time上調度一次。
   */
  public static void timer2() {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
      public void run() {
        System.out.println("-------延遲5000毫秒,每1000毫秒執(zhí)行一次--------");
      }
    }, time);
  }
 
  /**
   * 延遲5000毫秒,每1000毫秒執(zhí)行一次
   * 在5000(ms)后開始調度,每次調度完后,最少等待1000(ms)后才開始調度。
   */
  public static void timer3() {
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
      public void run() {
        System.err.println("-------延遲5000毫秒,每1000毫秒執(zhí)行一次--------");
      }
    }, 5000, 1000);
  }
  /**
   * 設置17:56執(zhí)行任務(第一次調度的時間),每過一天執(zhí)行一次
   * java.util.Timer.scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
   */
  public static void timer4() {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 17);
    calendar.set(Calendar.MINUTE, 26);
    calendar.set(Calendar.SECOND, 0);
 
    Date time = calendar.getTime();
 
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
      public void run() {
        System.out.println("-------設定要指定任務--------");
      }
    }, time, 1000 * 60 * 60 * 24);// 這里設定將延時每天固定執(zhí)行
  }

以上就是調用的幾種方法,再貼下我的代碼

    // 時間間隔(一天)
    long periodDay = 24 * 60 * 60 * 1000;
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 1); // 凌晨1點
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    Date date = calendar.getTime(); // 第一次執(zhí)行定時任務的時間
    // 如果第一次執(zhí)行定時任務的時間 小于當前的時間
    // 此時要在 第一次執(zhí)行定時任務的時間加一天,以便此任務在下個時間點執(zhí)行。如果不加一天,任務會立即執(zhí)行。
    if (date.before(new Date())) {
      date = this.addDay(date, 1);
    }
    new Timer().scheduleAtFixedRate(new TimerTask() {
      public void run() {
        Date now = new Date();
        //查出所有未關閉數(shù)據
        List<BankWork> list = bankWorkService.findList(new BankWork().setStatus(Const.DEFAULT_STATUS));
        //篩選出超過48小時的未關閉數(shù)據
        list = list.stream().filter(e -> {
          try {
            return judgmentDate(e.getModifiedTime(), now);
          } catch (Exception e1) {
            e1.printStackTrace();
          }
          return false;
        }).collect(Collectors.toList());
        list.forEach(e -> e.setStatus(Const.BANK_WORK_STATUS_OK).setModifiedTime(now));
        //修改所有未關閉數(shù)據為關閉
        bankWorkService.updateAsGroup(list);
      }
    }, date, periodDay);
     
    // 判斷時間是否超過48小時
  private static boolean judgmentDate(Date date1, Date date2) throws Exception {
 
    long cha = date2.getTime() - date1.getTime();
    if (cha < 0) {
      return false;
    }
    double result = cha * 1.0 / (1000 * 60 * 60);
    if (result <= 48) {
      return true;
    } else {
      return false;
    }
 
  }
 
  // 增加或減少天數(shù)
  private Date addDay(Date date, int num) {
    Calendar startDT = Calendar.getInstance();
    startDT.setTime(date);
    startDT.add(Calendar.DAY_OF_MONTH, num);
    return startDT.getTime();
  }

以上就是Java 定時器的使用示例的詳細內容,更多關于Java 定時器的資料請關注腳本之家其它相關文章!

相關文章

  • 搭建Spring MVC和Vue3的應用程序的實現(xiàn)

    搭建Spring MVC和Vue3的應用程序的實現(xiàn)

    本文主要介紹了搭建Spring MVC和Vue3的應用程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • SpringMVC中Controller類數(shù)據響應的方法

    SpringMVC中Controller類數(shù)據響應的方法

    這篇文章主要介紹了SpringMVC中的數(shù)據響應的問題,主要來了解 Controller 類如何進行數(shù)據響應的,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • 到底如何設置Java線程池的大小的方法示例

    到底如何設置Java線程池的大小的方法示例

    在我們日常業(yè)務開發(fā)過程中,或多或少都會用到并發(fā)的功能。那么并發(fā)線程池到底設置多大呢?文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Java鍵值對Pair的使用方式和操作實現(xiàn)

    Java鍵值對Pair的使用方式和操作實現(xiàn)

    鍵值對是一種常見的數(shù)據結構,它由一個唯一的鍵和與之關聯(lián)的值組成,本文就來介紹一下Java鍵值對Pair的使用方式和操作實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Mybatis-Plus自動填充更新操作相關字段的實現(xiàn)

    Mybatis-Plus自動填充更新操作相關字段的實現(xiàn)

    這篇文章主要介紹了Mybatis-Plus自動填充更新操作相關字段的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Java Spring分別實現(xiàn)定時任務方法

    Java Spring分別實現(xiàn)定時任務方法

    這篇文章主要為大家詳細介紹了Java與Spring設置動態(tài)定時任務的方法,定時任務的應用場景十分廣泛,如定時清理文件、定時生成報表、定時數(shù)據同步備份等
    2022-07-07
  • OpenTelemetry初識及調用鏈Trace詳解

    OpenTelemetry初識及調用鏈Trace詳解

    這篇文章主要為為大家介紹了OpenTelemetry初識及調用鏈Trace詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • IntelliJ?IDEA?2021.3永久最新激活至2099年(親測有效)

    IntelliJ?IDEA?2021.3永久最新激活至2099年(親測有效)

    最新版idea2021.3已出來,很多網友迫不及待的要升級idea2021最新版,今天小編抽空給大家整理了一篇教程關于idea2021.3最新激活教程,本文以idea2021.2.3為例通過圖文并茂的形式給大家分享激活詳細過程,感興趣的朋友參考下吧
    2020-12-12
  • Java實現(xiàn)冒泡排序示例介紹

    Java實現(xiàn)冒泡排序示例介紹

    冒泡排序是一種簡單的排序算法,通過不斷比較相鄰兩個元素的大小,將較大的元素向后移動,最終將最大的元素放到了數(shù)組的末尾。Java中的實現(xiàn)方式是通過嵌套兩層循環(huán),外層循環(huán)控制比較的次數(shù),內層循環(huán)控制每次比較時相鄰元素的比較和交換
    2023-04-04
  • IDEA 錯誤之找不到或無法加載主類的問題

    IDEA 錯誤之找不到或無法加載主類的問題

    這篇文章主要介紹了IDEA 錯誤之找不到或無法加載主類,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08

最新評論