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

java多線程之定時器Timer的使用詳解

 更新時間:2017年04月11日 11:26:01   作者:醉眼識朦朧  
本篇文章主要介紹了java多線程之定時器Timer的使用詳解,Time類主要負責完成定時計劃任務的功能,有興趣的可以了解一下。

定時的功能我們在手機上見得比較多,比如定時清理垃圾,鬧鐘,等等.定時功能在java中主要使用的就是Timer對象,他在內(nèi)部使用的就是多線程的技術.

Time類主要負責完成定時計劃任務的功能,就是在指定的時間的開始執(zhí)行某個任務.

Timer類的作用是設置計劃任務,而封裝任務內(nèi)容的類是TimerTask類.此類是一個抽象類,繼承需要實現(xiàn)一個run方法.

通過查文檔我們看到Timer有以下幾個構造函數(shù):

 

Timer的方法以下這么多:

下面我們通過定時器來完成一個簡單功能,就是在運行項目三秒后,在控制臺打印出"您該起床了",來模擬一下鬧鐘的功能:

package com.wang.reflect;

import java.util.Timer;
import java.util.TimerTask;

class MyTask extends TimerTask{

  @Override
  public void run() {
    System.out.println("您該起床了!!!!");
  }
}
public class TimerDemo {
  public static void main(String[] args) {
    //創(chuàng)建定時器對象
    Timer t=new Timer();
    //在3秒后執(zhí)行MyTask類中的run方法
    t.schedule(new MyTask(), 3000);
    
  }
}

運行后,我們發(fā)現(xiàn)三秒后控制臺打印出了相當?shù)奈淖?但是任務雖然執(zhí)行完了,進程卻沒有銷毀,還是呈紅色狀態(tài),這是什么原因呢?

創(chuàng)建了一個Timer就相當于啟動了一個新線程,這個新線程并不是守護線程,所以會一直運行.

在Time類和TimerTask類中都有一個cancel()方法.

TimerTask類中的作用是:將自身從任務隊列中清除,(一個Timer對象可以執(zhí)行多個Timertask任務)

Timer類中的作用是:將任務隊列中的全部任務清空.

下面寫一個實例,定時刪除指定磁盤某個目錄下的所有文件:

package com.wang.reflect;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;


class MyTask extends TimerTask{
/**
 * 定時刪除指定位置的文件,(這里以刪除f盤下aa文件夾的所有文件為例)
 */
  @Override
  public void run() {
    File file=new File("f://aa");
    deleteFolder(file);
    
  }
  public void deleteFolder(File file){
    File[] files=file.listFiles();
    for(File f:files){
      if(f.isDirectory()){
        //使用遞歸
        deleteFolder(f);
      }else{
        f.delete();
      }
    }
    file.delete();
  }
  
}
public class TimerDemo {

  public static void main(String[] args) throws ParseException {
    //創(chuàng)建定時器對象
    Timer t=new Timer();
    String time="2016-04-04 11:26:40";
    Date d=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
    t.schedule(new MyTask(), d);
  }
}

注意,如果在上面測試代碼中,我給出的Date類型的時間,早于當前的時間.則會立即執(zhí)行task任務.

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Spring Boot 整合 Mockito提升Java單元測試的高效實踐案例

    Spring Boot 整合 Mockito提升Java單元測試的高效實踐案例

    Mockito與Spring Boot的整合為Java開發(fā)者提供了一套完整的解決方案,使得單元測試更為精準、高效,從而確保了代碼質(zhì)量、降低了維護成本,并促進了項目的持續(xù)集成與交付,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • java創(chuàng)建簡易視頻播放器

    java創(chuàng)建簡易視頻播放器

    這篇文章主要為大家詳細介紹了java創(chuàng)建簡易視頻播放器的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • JavaWeb學習筆記之Filter和Listener

    JavaWeb學習筆記之Filter和Listener

    這篇文章主要給大家介紹了關于JavaWeb學習筆記之Filter和Listener的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Java如何搭建一個個人網(wǎng)盤

    Java如何搭建一個個人網(wǎng)盤

    這篇文章主要介紹了Java如何搭建一個個人網(wǎng)盤,對網(wǎng)盤感興趣的讀者,可以參考一下
    2021-04-04
  • Java8使用Supplier啟動ScheduledThread代碼實例

    Java8使用Supplier啟動ScheduledThread代碼實例

    這篇文章主要介紹了Java8使用Supplier啟動ScheduledThread詳解,項目開啟立即啟動定時任務是很多項目都會遇到的一個需求,如何利用Java提供的函數(shù)優(yōu)雅的寫出來十分考驗一個人的功底,需要的朋友可以參考下
    2024-01-01
  • Mybatis-plus批量去重插入ON DUPLICATE key update使用方式

    Mybatis-plus批量去重插入ON DUPLICATE key update使用方式

    這篇文章主要介紹了Mybatis-plus批量去重插入ON DUPLICATE key update使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java使用內(nèi)存數(shù)據(jù)庫ssdb的步驟

    java使用內(nèi)存數(shù)據(jù)庫ssdb的步驟

    這篇文章主要介紹了java使用內(nèi)存數(shù)據(jù)庫ssdb的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • SpringBoot如何接收前端傳來的json數(shù)據(jù)

    SpringBoot如何接收前端傳來的json數(shù)據(jù)

    這篇文章主要介紹了SpringBoot如何接收前端傳來的json數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring中bean的初始化和銷毀幾種實現(xiàn)方式詳解

    Spring中bean的初始化和銷毀幾種實現(xiàn)方式詳解

    這篇文章主要介紹了Spring中bean的初始化和銷毀幾種實現(xiàn)方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 一篇文章帶你認識Java8接口的默認方法

    一篇文章帶你認識Java8接口的默認方法

    這篇文章主要給大家介紹了如何通過一篇文章帶你認識Java8接口的默認方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05

最新評論