1. 程式人生 > >幫助文件 | JDK 1.8 中的 Timer 類

幫助文件 | JDK 1.8 中的 Timer 類

1 Class Timer

定時器 Timer 類位於java.util包,並且繼承自根類 Object,具體為:

  • public class Timer extends Object

執行緒排程任務是可以在後臺執行緒中執行的能力。任務可以執行一次,也可以定期重複執行。

與每個 Timer 物件相對應的是一個單獨的後臺執行緒,它用於順序執行所有定時器的任務。定時器任務應該很快完成。如果一個計時器任務花費了大量的時間來完成,它會“影響”計時器的任務執行執行緒。同時,反過來,延遲執行子序列的任務,當(或如果)延遲任務最終完成的時候,這些任務可能會“串聯”並迅速執行。

在對 Timer 物件的最後一次實時引用消失後,所有未完成的任務都已完成執行,計時器任務的執行執行緒將優雅地終止(併成為垃圾收集的物件)。然而,垃圾回收器可能在任意長的時間內回收垃圾物件(換言之,不知道垃圾回收器什麼時候會執行,或者會不會執行,例如,如果記憶體空間足夠的話,垃圾回收器可能一直不執行)。預設情況下,任務執行執行緒不作為守護執行緒執行,因此它能夠使應用程式終止。如果我們想要快速終止定時器的任務執行執行緒,我們應該呼叫計時器的cancel

方法。

如果定時器的任務執行執行緒意外終止,例如,因為它呼叫了stop方法,那麼在定時器上排程任務的任何進一步的嘗試都將會產生一個 IllegalStateException,就像定時器的cancel方法被呼叫一樣。

這個類(Timer)是執行緒安全的:多個執行緒可以共享一個 Timer 物件,而不需要外部同步。

這個類(Timer)不提供實時保證:使用Object.wait(long)方法是排程任務。

Java 5.0 引入了java.util.concurrent包,其中一個併發工具是 ScheduledThreadPoolExecutor,它用於以給定速率或延遲重複執行任務的執行緒池。這實際上是一個更靈活的替代 Timer / TimerTask 組合,因為它允許多個服務執行緒,接受各種時間單位,並且不需要子類 TimerTask(僅實現 Runnable 介面)。在一個執行緒上配置 ScheduledThreadPoolExecutor 等同於使用 Timer 類。

  • 實現注意事項:這個類可以擴充套件到大量併發排程的任務(數千應該沒有問題)。在內部,它使用二進位制堆表示其任務佇列,因此計劃任務的成本為O(logn),其中n為併發計劃排程任務的數量。
  • 實現注意事項:所有建構函式啟動定時器執行緒。

起始版本:1.3

2 概要

2.1 構造方法概要

  • Timer():建立一個新的定時器。
  • Timer(boolean isDaemon):建立一個新的定時器,其關聯執行緒可以作為守護程序執行。
  • Timer(String name):建立一個新的定時器,其關聯執行緒具有指定的名稱。
  • Timer(String name, boolean isDaemon)
    :建立一個新的定時器,其關聯執行緒具有指定的名稱,並且可以指定其關聯程序是否作為守護程序執行。

2.1 方法概要

  • void cancel():終止此定時器,丟棄當前任何的排程任務。
  • int purge():從當前的定時器任務佇列中,移除所有已經取消的任務。
  • void schedule(TimerTask task, Date time):在指定的時間點,執行指定的任務。
  • void schedule(TimerTask task, Date firstTime, Long period):從指定的時間點開始執行指定的任務,並以固定的時間週期重複執行指定的任務。
  • void schedule(TimerTask task, Long delay):在經過指定的延遲時間之後,執行指定的任務。
  • void schedule(TimerTask task, Long delay, Long period):在經過指定的延遲時間之後,執行指定的任務,並以固定的時間週期重複執行指定的任務。
  • void scheduleAtFixedRate(TimerTask task, Date firstTime, Long period):從指定的時間點開始執行指定的任務,並以固定的時間週期重複執行指定的任務。
  • void scheduleAtFixedRate(TimerTask task, Long delay, Long period):在經過指定的延遲時間之後,執行指定的任務,並以固定的時間週期重複執行指定的任務。

相關推薦

幫助 | JDK 1.8 Timer

1 Class Timer 定時器 Timer 類位於java.util包,並且繼承自根類 Object,具體為: public class Timer extends Object 執行緒排程任務是可以在後臺執行緒中執行的能力。任務可以執行一次,也可

將CHM檔案轉換成html檔案、將jdk幫助加入到eclipse,jdk1.8中文幫助下載

一、將CHM檔案轉換成html檔案 1.下載相關的CHM檔案,如:我下載的是jdk1.8幫助文件(中文版),需要的自行下載,我已儲存到我的百度網盤了,連結在最下方。 注:個人建議下載谷歌版的,可以參考下方這張圖: 2.將whm檔案下載到D盤的jdkap

小議 JDK 1.8 的 ConCurrentHashMap 和 ConcurrentSkipListMap

A)  ConCurrentHashMap 在 jdk1.8 中主要做了兩方面的改進。 1) 取消segments欄位,直接採用transient volatile HashEntry<K,V>[] table儲存資料,     &nb

jdk 1.8的list排序

首先看看collections實現        public static <T> void sort(List<T> list, Comparator<? super T> c) { list.sort(c);

在eclipse如何用JDK幫助

 剛開始用eclipse,不知道如何在eclipse中用JDK的幫助文件以及在eclipse中如何設定  這幾天終於讓我給搞定了,現在總結下來,    希望能給大家帶來幫助。  我寫個恐怕是最簡單的plugin:  1  建個目錄:  bdsc.java.doc  2  pl

解決Eclipse新建jspISO8859-1 編碼問題

ces 問題 eclips cli -- ips pes 中新 文件 看了許多的貼說是在eclipse --> window --> Preferences --> General --> Content Types --> text-->

jdk 1.8 VisualVM 插 地址 變更

連不上 ref 更新 net 通過 bsp get 變更 .net 打開Java VisualVM檢查更新插件時,默認的連接連不上,通過瀏覽器訪問之後發現默認的服務器已經404,新地址已經遷移到github,下面這個地址裏面有不同版本jdk對應的插件中心地址。 https:

寫一個腳本批量轉換項目GB2312編碼的為UTF-8編碼

for 腳本 一個 bash iconv lua In don convert #!/bin/bash convert_file() { for file in `find .` do if [[ -f $file ]] t

Java 007 面向物件(構造方法、static關鍵字、JDK幫助、Math

知識點梳理 心得體會 小知識點 1.不同型別的靜態變數 1>靜態變數是基本資料型別時,類的外部不用建立該類例項可以能直接使用 2>靜態變數是引用時,即靜態變數是一個物件的引用,必須先初始化這個物件,才能將引用指向靜態變數 2.靜態成員與例項成員 1&

visual studio 2013 本地幫助新增 ArcEngine的幫助

在 ArcObject SDK For .Net Framework 安裝完成後,visual studio 2013 本地幫助中安裝 ArcEngine的幫助文件 1、選擇  “幫助”--“設定幫助首選項”--“在幫助檢視器中啟動” 2、選擇 “幫助”--“新增何移除幫助

在 CentOS 1804 手動安裝 JDK 1.8

使用FlashFXP上傳jdk到CentOS,檔案位置如圖所示: 進入jdk所在的資料夾: ​​[[email protected] ~]# cd /usr/java/ 檢視資料夾下的檔案: [[email protected] ja

在eclipse檢視sources原始碼和JavaDoc幫助

今天學習Netty的過程中,從官網下載的netty裡面的內容如下: 其中jar資料夾裡面的內容如下: 可以看到每一個具體的jar包就對應有一個sources.jar包,然後所有的幫助文件在javaDoc檔案下面的jar包裡面 那怎麼檢視一個類的原始碼和幫助文件呢??? 當我們在沒有進行相應的配置前,當我

特定docker容器安裝jdk 1.8

前言:由於一些通過docker-compse安裝的特定的docker 容器中沒有安裝vim或者jdk。 通過以下步驟來安裝和使用指定版本的jdk 1.在宿主系統下載所需要的jdk版本的gz檔案 2.複製gz檔案到容器中的root的使用者目錄下 docker cp

Java1.8 幫助

      中文 – 谷歌版   線上版: https://blog.fondme.cn/apidoc/jdk-1.8-google/   下載連結:http://download.csdn.net/detail/qw599186875/98

jdk幫助

java 1.6 幫助文件中文英文Java1.8 幫助文件英文中文 – 谷歌版中文 – 有道版中文 – 百度版JDK1.8 API 英文 Java幫助文件JDK API java 幫助文件 JDK1.8 API英文java幫助文件Java最新幫助文件連結:http://dow

DirectShow學習筆記1-幫助Introduction to DirectShow Application Programming

翻譯和摘要 DirectShow幫助文件中: Getting Started——> Introduction to DirectShow Application Programming 文章 一、Filters and Filter Graphs DirectShow 中的

Fiddler2介紹及使用和中文幫助(1)

Fiddler2 主選單 六個主選單分別是: 檔案(File) Capture Traffic ——啟用捕獲功能,快捷鍵 F12 此功能的開啟/關閉狀態,程式安裝後預設是開啟的。可以在 Fiddler 底部狀態列最左側看到:(開啟狀態)、(關閉狀態) 也可以通過滑鼠點選狀態列該圖示來進行切換。 Load A

在vim和macvim使用中文幫助

困擾了我一週的問題終於解決了,好開心!下面介紹一下如何實現如題所述的要求。 首先需要去下載中文文件,地址在這。 下載完成後將壓縮包解壓,並釋放到你指定的目錄下,比如~/vimcdoc 接著進入這個目錄 ,即在terminal內輸入 cd ~/vimcd

Linux怎麼檢視命令的幫助、怎麼檢視系統配置檔案的幫助

引言:上期回顧(想要學習的童鞋可以點選看看) 上一章講訴了怎麼快速查詢檔案,以及怎麼找到一個命令所在位置,那麼這一章就來講怎麼檢視命令的幫助文件。在Linux命令中,我們是不會每個命令都會講到的,如果遇到沒有見過的命令該怎麼辦呢?建議大家先不要去問前輩,這樣自己的印象不會深

java8 JDK1.8 API 中文 翻譯版 java幫助

java 1.6 幫助文件 中文 英文 Java1.8 幫助文件 英文 中文 – 谷歌版 中文 – 有道版 中文 – 百度版 JDK1.8 API 英文 Java幫助文件 JDK API java 幫助文件  J