timer 功能在指定的時間間隔內重複觸發指定視窗的計時器事件。語法Timer ( interval {, windowname } )參數interval:指定兩次觸發Timer事件之間的時間間隔,有效值在0到65之間。本文文主要為大家詳細介紹了Java定時器Timer的使用方法,具有一定的參考價值,有興趣的小夥伴們可以參考一下。
定時規劃任務功能在Java中主要使用的是Timer對象,它在內部使用多執行緒的方式進行處理,所以它和多執行緒技術還是有非常大的關聯的。在JDK中Timer類別主要負責規劃任務的功能,也就是在指定的時間開始執行某一個任務,但封裝任務的類別卻是TimerTask類別。
透過繼承TimerTask 類別並實作run() 方法來自訂要執行的任務:
public class Mytask extends TimerTask { @Override public void run() { DateFormat dateFormat = TimeUtil.df.get(); System.out.println("我的任务运行了" + dateFormat.format(new Date())); } }## 執行Timer.schedule(TimerTask task,Date time) 在執行時間執行任務:
#
public class Run { private static Timer timer=new Timer(); public static void main(String[] args) throws ParseException { timer.schedule(new Mytask(), TimeUtil.df.get().parse("2017-09-14 09:19:30")); } }備註:時間轉換工具類,確保執行緒安全:
public class TimeUtil { public static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }; }
二、Timer類別注意事項
private static Timer timer=new Timer(true);2、提前:當計畫時間早於目前時間,則任務立即運作。 3、延遲:TimerTask 是以佇列的方式一個一個被順序運行的,所以執行的時間和你預期的時間可能不一致,因為前面的任務可能消耗的時間較長,則後面的任務運轉的時間會被延遲。延遲的任務具體開始的時間,就是依據前面任務的"結束時間"
值得注意的是,Timer 的cancel()有時不一定會停止執行排程任務,而是正常執行。這是因為Timer類別中的cancel()方法有時並沒有爭搶到queue鎖,所以TimerTask類別中的任務繼續正常執行。
三、scheduleAtFixedRate(TimerTask task,Date firstTime,long period) 和schedule(TimerTask task,Date firstTime,long period) 區別
########################## ######相同點:######1、方法schedule 和方法scheduleAtFixedRate 都會依序執行,所以不用考慮非執行緒安全的情況。 ######2、方法schedule 和方法 scheduleAtFixedRate 如果執行任務的時間沒有被延遲,那麼下一次任務的執行時間參考的是上一次的任務的"開始"時的時間來計算的。 ######3、方法schedule 和方法 scheduleAtFixedRate 如果執行任務的時間被延遲了,那麼下一次任務的執行時間參考的是上一次任務"結束"時的時間來計算。 ###########################不同點:######### 方法schedule 與方法scheduleAtFixedRate 使用上基本上沒什麼差異,就是scheduleAtFixedRate 具有追趕執行性,什麼意思呢?就是如果任務 在週期性運行過程中被打斷了,scheduleAtFixedRate 會嘗試把之前落下的任務補上運行。而schedule就不管了,接著運行接下來的任務就行了,可以參考這篇博客,寫的很生動。 ######以上內容就是如何使用Java定時器Timer的方法,希望能幫助大家。 ######相關推薦:#########C# 定時器Timer的實例介紹#########
Java 定時器(Timer,TimerTask)詳解及實例程式碼
#以上是如何使用Java定時器Timer的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

封装是一种信息隐藏技术,是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法;封装可以被认为是一个保护屏障,防止指定类的代码和数据被外部类定义的代码随机访问。封装可以通过关键字private,protected和public实现。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver CS6
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具