ตัวจับเวลา ชั้นเรียนจัดกำหนดการงานให้ทำงานในเวลาที่กำหนดหนึ่งครั้งหรือซ้ำๆ นอกจากนี้ยังสามารถทำงานในพื้นหลังเป็นเธรด daemon ในการเชื่อมโยง Timer กับเธรด daemon มีตัวสร้างที่มี บูลีน ค่า. ตัวจับเวลาจัดกำหนดการงานด้วยล่าช้าคงที่ เช่นเดียวกับอัตราคงที่ . ในความล่าช้าคงที่ หากการดำเนินการใดๆ ล่าช้าโดย System GC การดำเนินการอื่น ๆ จะล่าช้าและการดำเนินการทุกครั้งจะล่าช้าตามการดำเนินการก่อนหน้า ในอัตราคงที่ หากการดำเนินการใดๆ ล่าช้าโดย System GC จากนั้นดำเนินการ 2-3 ครั้งติดต่อกันเพื่อให้ครอบคลุมอัตราคงที่ซึ่งสอดคล้องกับเวลาเริ่มต้นการดำเนินการครั้งแรก คลาส Timer ให้ ยกเลิก() วิธีการยกเลิกตัวจับเวลา เมื่อเรียกวิธีนี้ ตัวจับเวลาจะสิ้นสุดลง คลาสตัวจับเวลาดำเนินการเฉพาะงานที่ปรับใช้ TimerTask .
ตัวอย่าง
import java.util.*; public class TimerThreadTest { public static void main(String []args) { Task t1 = new Task("Task 1"); Task t2 = new Task("Task 2"); Timer t = new Timer(); t.schedule(t1, 10000); // executes for every 10 seconds t.schedule(t2, 1000, 2000); // executes for every 2 seconds } } class Task extends TimerTask { private String name; public Task(String name) { this.name = name; } public void run() { System.out.println("[" + new Date() + "] " + name + ": task executed!"); } }
ผลลัพธ์
[Thu Aug 01 21:32:44 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:46 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:48 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:50 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:52 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:53 IST 2019] Task 1: task executed! [Thu Aug 01 21:32:54 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:56 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:58 IST 2019] Task 2: task executed! [Thu Aug 01 21:33:00 IST 2019] Task 2: task executed!