การกำหนดเวลางานหมายถึงการปฏิบัติงานโดยอัตโนมัติตามจุดเวลาที่กำหนดช่วงเวลาที่กำหนดหรือจำนวนการประหารชีวิตที่กำหนด
ตัวอย่างเช่นเราต้องการให้ระบบสำรองไฟล์ฐานข้อมูลทุกวันอาทิตย์เวลา 21.00 น. และเราสามารถใช้การจัดตารางงานเพื่อใช้งานได้ เพื่อความสะดวกยิ่งขึ้นเราต้องเริ่มกำหนดเวลานี้โดยอัตโนมัติหลังจากเริ่มต้น Tomcat
นี่คือ Timertask API:
ด้านล่างนี้เป็น API คลาสตัวจับเวลา
ในตัวอย่างต่อไปนี้มีการใช้งานสองฟังก์ชั่น:
1. ตรวจสอบการเริ่มต้นและการปิดเว็บคอนเทนเนอร์ของ Tomcat
2. เมื่อเว็บคอนเทนเนอร์เริ่มต้นตารางงานจัดสรรวัตถุงานเวลาและระยะเวลา
ในการตรวจสอบการเปลี่ยนแปลงในเว็บคอนเทนเนอร์คุณต้องลงทะเบียนผู้ฟังใน web.xml ก่อน
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <web-app version = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://ww.w3.org/200 XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" <Sistener-Class> com.util.timerlistener </listener-lass> </listener> <display-name> </display-name> <welcome-file-list> <welcome-file> index.jsp </welcome-file>
ขั้นตอนที่สอง คือการกำหนดวัตถุงาน Timertask ขั้นพื้นฐาน
แพ็คเกจ com.util; นำเข้า java.util.timer; นำเข้า java.util.timertask;/** * 1. กำหนดวัตถุงาน * jdk - วัตถุงานต้องสืบทอด Timertask * */ฐานข้อมูลระดับสาธารณะขยาย Timertask ตารางการแยกและข้อมูลไปยังไฟล์ SQL ท้องถิ่น "); -
ขั้นตอนที่ 3 ตรวจสอบการเปลี่ยนแปลงในเว็บคอนเทนเนอร์ เมื่อเว็บคอนเทนเนอร์เริ่มต้นจัดสรรเวลาและรอบสำหรับการกำหนดเวลางาน รหัสต่อไปนี้มีหลายตัวอย่าง
แพ็คเกจ com.util; นำเข้า java.util.date; นำเข้า java.util.timer; นำเข้า Javax.servlet.servletContextEvent; นำเข้า Javax.servlet.servletContextListener; / *** ฟังเว็บคอนเทนเนอร์ปิด*/ @Override เป็นโมฆะสาธารณะบริบท (ServletContextEvent SCCE) {System.out.println ("Web Container Close"); timer.cancel (); } / *** ฟังเว็บคอนเทนเนอร์เริ่มต้น* / @Override โมฆะสาธารณะบริบท (ServletContextEvent SCET) {System.out.println ("Web Container Startup"); / *** เตรียมเครื่องจับเวลาตัวจับเวลา*/ ตัวจับเวลา = ตัวจับเวลาใหม่ (); System.out.println ("ตัวจับเวลาอยู่ในการเตรียมและเริ่มการจัดสรรเวลาและระยะเวลาสำหรับการกำหนดเวลางาน"); // สร้าง DataBackUp DataBackUp งานงาน = databackup ใหม่ (); // 1 กำหนดเวลา (งาน TimerTask เวลาข้อมูล) // กำหนดเวลางานที่ระบุเพื่อเริ่มการดำเนินการตามเวลาที่กำหนด // เดือนควรลดลงหนึ่ง //timer.schedule(backup, วันที่ใหม่ (115,8,10,9,54,0)); // 2 กำหนดเวลา (งาน TimerTask วันที่ครั้งแรกระยะเวลานาน) // กำหนดการ (สำรอง, วันที่ใหม่ (115,8,10,10,0,0,0), 2000); // 3Schedule (งาน TimerTask, การหน่วงเวลานาน) // กำหนดเวลา (งาน TimerTask, ล่าช้านาน) // กำหนดการ (งาน timertask, การหน่วงเวลานาน) // กำหนดการ (งาน timertask, การหน่วงเวลานาน) // ตารางเวลา (งาน timertask, ล่าช้านาน) // กำหนดการ (งาน timertask ล่าช้า) //timer.schedule(backup, 5000); // 4 ตารางเวลา (งาน TimerTask, ล่าช้านาน, เป็นเวลานาน) //timer.schedule(backup, 5000, 2000); // 5. ออกเดินทางครั้งเดียวเวลา 9.00 น. ทุกวัน //timer.schedule(backup, วันใหม่ (115,8,11,9,0,0), 24*60*60*1000); // 6. ออกเดินทางครั้งเดียวในเวลา 3 โมงเช้าทุกวันเสาร์ //timer.schedule(backup, วันใหม่ (115,8,12,3,0,0), 7*24*60*60*1000); - ด้วยวิธีนี้เมื่อ Tomcat เริ่มต้นวัตถุงานจะเริ่มดำเนินการตามเวลาและรอบที่จัดสรรของคุณ
สรุป: ใช้ตัวจับเวลาเพื่อใช้การจัดตารางงานก่อนสร้างวัตถุงานที่กำหนดไว้เช่นการสำรองข้อมูลที่นี่; จากนั้นสร้างอินสแตนซ์ตัวจับเวลาสร้างอินสแตนซ์วัตถุงานและเรียกใช้วิธีการที่เกี่ยวข้องตามข้อกำหนดในการจัดสรรเวลาและระยะเวลาให้กับวัตถุงาน ข้างต้นคือการดำเนินการตามกำหนดเวลางาน สำหรับเมื่อตัวจับเวลานี้เริ่มต้นนั่นคือเมื่อตัวจับเวลาเริ่มอินสแตนซ์จะต้องพิจารณาตามสถานการณ์จริง ตัวอย่างเช่นรหัสด้านบนคือการเริ่มจับเวลาหลังจากเริ่มต้นคอนเทนเนอร์เว็บ
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น