หมายเหตุของนักแปล: โดยส่วนตัวแล้วฉันคิดว่าการใช้งานที่กำหนดเวลาเพื่อเรียกใช้การรวบรวมขยะไม่ใช่ตัวอย่างที่ดี ข้อมูลไฟล์ ฯลฯ
ในบทความนี้ฉันจะแนะนำวิธีการใช้งานที่แตกต่างกัน 3 วิธี:
1. การใช้งานเธรดธรรมดา
2. การใช้งาน TimerTask
3. การใช้งาน ScheduleDexecutorService
1. เธรดธรรมดา
นี่คือสิ่งที่พบบ่อยที่สุด สามารถนำไปใช้ได้อย่างรวดเร็วและง่ายดายรหัสมีดังนี้:
การคัดลอกรหัสมีดังนี้:
งานชั้นเรียนสาธารณะ 1 {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
// วิ่งในวินาที
Final Long TimeInterval = 1,000;
runnable runnable = new runnable () {
โมฆะสาธารณะเรียกใช้ () {
ในขณะที่ (จริง) {
// -------- รหัสสำหรับงานที่จะรัน
System.out.println ("สวัสดี !!");
// ---------- จบที่นี่
พยายาม {
thread.sleep (timeinterval);
} catch (interruptedException e) {
E.PrintStackTrace ();
-
-
-
-
เธรดเธรด = เธรดใหม่ (Runnable);
thread.start ();
-
-
2. ใช้ตัวจับเวลาและ timertask
การใช้งานข้างต้นนั้นง่ายและง่ายมาก แต่ก็ยังขาดฟังก์ชั่นบางอย่าง
เมื่อเทียบกับวิธีการข้างต้นการใช้ตัวจับเวลาและ TimerTask มีประโยชน์ดังต่อไปนี้:
1. ควบคุมเมื่อเริ่มต้นและยกเลิกงาน
2. คุณสามารถระบุเวลาหน่วงเวลาที่คุณต้องการเมื่อดำเนินงานเป็นครั้งแรก
ในระหว่างการใช้งานคลาสจับเวลาสามารถกำหนดเวลางานและ TimerTask ใช้งานเฉพาะในวิธีการเรียกใช้ ()
อินสแตนซ์ตัวจับเวลาสามารถกำหนดเวลามัลติทาสก์และเป็นแบบเธรดที่ปลอดภัย
เมื่อมีการเรียกตัวสร้างตัวจับเวลามันจะสร้างเธรดที่สามารถใช้ในการกำหนดเวลางาน
นี่คือรหัส:
การคัดลอกรหัสมีดังนี้:
นำเข้า java.util.timer;
นำเข้า java.util.timertask;
งานชั้นเรียนสาธารณะ 2 {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
timertask task = new timertask () {
@Override
โมฆะสาธารณะเรียกใช้ () {
// งานที่จะเรียกใช้ไปที่นี่
System.out.println ("สวัสดี !!!");
-
-
ตัวจับเวลาตัวจับเวลา = ตัวจับเวลาใหม่ ();
ล่าช้านาน = 0;
ระยะเวลายาว = 1 * 1000;
// กำหนดเวลางานที่จะทำงานในช่วงเวลา
timer.scheduleatfixedrate (งานล่าช้า
Integerperiod);
} // สิ้นสุดหลัก
-
คลาสเหล่านี้มีอยู่ตั้งแต่ JDK 1.3
3. ScheduleDexecutorService
ScheduleDexecutorService ได้รับการแนะนำให้รู้จักกับคลาสเครื่องมือพร้อมกันจาก Java SE 5 Java.util.concurrent ซึ่งเป็นวิธีการใช้งานที่เหมาะสมที่สุด
เมื่อเทียบกับสองวิธีข้างต้นมันมีประโยชน์ดังต่อไปนี้:
1. เปรียบเทียบกับเธรดเดี่ยวของตัวจับเวลามันจะทำงานผ่านพูลเธรด
2. คุณสามารถตั้งค่าเวลาหน่วงสำหรับการดำเนินงานแรก
3. ให้ข้อตกลงที่ดีในการกำหนดช่วงเวลาการดำเนินการ
ต่อไปนี้เป็นรหัสการใช้งาน
การคัดลอกรหัสมีดังนี้:
นำเข้า java.util.concurrent.executors;
นำเข้า java.util.concurrent.scheduledexecutorservice;
นำเข้า java.util.concurrent.timeUnit;
TASSION ชั้นเรียนสาธารณะ 3 {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
runnable runnable = new runnable () {
โมฆะสาธารณะเรียกใช้ () {
// งานที่จะเรียกใช้ไปที่นี่
System.out.println ("สวัสดี !!");
-
-
ScheduleDexecutorService Service = Executors
.newsinglethreadscheduledExecutor ();
Service.scheduleatfixedrate (runnable, 0, 1, timeunit.seconds);
-
-