ในพื้นหลังแอปพลิเคชันของเครื่องมือพัฒนาและทดสอบฉันมักจะได้ยินเพื่อนร่วมงานบอกว่าพวกเขาจำเป็นต้องทำงานที่กำหนดเวลาเพื่อทำการประมวลผลบันทึกหรือการทำความสะอาดข้อมูลรวมถึงการทำตรรกะการคำนวณทางธุรกิจที่ซับซ้อน เมื่อเลือกงานที่กำหนดเวลาพวกเขาจะใช้งานได้อย่างรวดเร็วและเลือกวิธีที่เหมาะสมกว่าสำหรับคุณได้อย่างไร ฉันได้รวบรวมและจัดระเบียบวิธีการบางอย่างในการใช้งานตามกำหนดเวลาที่นี่ ฉันหวังว่ามันจะช่วยนักเรียนที่เพิ่งเริ่มทำงานตามกำหนดเวลา โปรดแก้ไขการเขียนที่ไม่ถูกต้อง
มีสามวิธีในการสรุปงานตามกำหนดเวลา Java:
1.1 สร้างเธรดจากนั้นปล่อยให้มันทำงานในขณะที่ลูปและบรรลุผลของงานเวลาผ่านวิธีการนอนหลับ
1.2 การใช้ตัวจับเวลาและ TimerTask มีประโยชน์ดังต่อไปนี้เมื่อเทียบกับวิธีแรก:
1.3 มีการแนะนำ ScheduleDexecutorService เป็นคลาสเครื่องมือพร้อมกันจาก java.util.concurrent นี่คือวิธีการใช้งานที่กำหนดเวลาในอุดมคติ เมื่อเทียบกับสองวิธีก่อนหน้านี้มีประโยชน์ดังต่อไปนี้:
มีสามวิธีในการสรุปงานฤดูใบไม้ผลิที่กำหนดเวลา:
2.1 ScheduledTimertask: ScheduledTimerTask ของ Spring กำหนดวงจรการทำงานของงานจับเวลา น่าเสียดายที่คุณสามารถระบุความถี่ของการดำเนินการงานได้ แต่คุณไม่สามารถระบุได้อย่างแน่นอนเมื่อมันทำงานซึ่งต้องใช้ควอตซ์ที่สองสำหรับการกำหนดเวลางาน
สร้างงานธุรกิจประกาศในไฟล์กำหนดค่าฤดูใบไม้ผลิ
ในไฟล์การกำหนดค่าสปริงกำหนดค่า ScheduleDTimerTask และเชื่อมโยงอินสแตนซ์งานที่กำหนดเอง
เริ่มจับเวลา TimerFactoryBean ของฤดูใบไม้ผลิรับผิดชอบในการเริ่มงานกำหนดเวลา
2.2 การใช้ควอตซ์:
ก่อนอื่นให้กำหนดงานตรรกะทางธุรกิจตามปกติ:
ประกาศและกำหนดค่าวิธีทริกเกอร์ของการจัดตารางงานในฤดูใบไม้ผลิ
ที่นี่มีการกระตุ้นงานสองประเภทสำหรับควอตซ์คือ
org.springframework.scheduling.quartz.simpletriggerbean
org.springframework.scheduling.quartz.crontiggerbean
SimpletriggerBean คนแรกรองรับการโทรที่ความถี่ที่แน่นอนเช่นการทำงานทุกครั้งทุกครั้ง
<bean id = "simpletrigger"> <property name = "JobDetail" ref = "myjob" /> <property name = "startDelay" value = "0" /> <!-หลังจากโรงงานจัดส่งเป็นอินสแตนซ์การจัดส่งเริ่มต้นหลังจาก 0 วินาที->
ประเภทที่สอง ของ Crontriggerbean รองรับการทำงานหนึ่งครั้งในเวลาที่กำหนดเช่นวิ่งหนึ่งครั้งเวลา 12:00 ทุกวันตามที่กำหนดไว้ข้างต้น;
กำหนดค่าโรงงานจัดส่ง
org.springframework.scheduling.quartz.schedulerfactorybean, รหัสดังกล่าวข้างต้น;
เพียงแค่เปิดแอปพลิเคชันของคุณ
2.3 การใช้สปริงงาน
เครื่องมืองานที่กำหนดเวลาของสปริงงานสปริงสามารถเปรียบเทียบกับควอตซ์ที่มีน้ำหนักเบาและใช้งานง่ายมาก ไม่จำเป็นต้องใช้แพ็คเกจเพิ่มเติมยกเว้นแพ็คเกจที่เกี่ยวข้องกับฤดูใบไม้ผลิและรองรับไฟล์คำอธิบายประกอบและการกำหนดค่าสองประเภท:
ขั้นตอนที่ 1: เขียนคลาสงาน; TaskJob, Method Job1 - ขั้นตอนที่สองของการละเว้นรหัส: เพิ่มเนมสเปซและคำอธิบายในส่วนหัวไฟล์การกำหนดค่าสปริง
<ถั่ว xmlns = "http://www.springframework.org/schema/beans" xmlns: task = "http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd ">
ขั้นตอนที่ 3: ตั้งค่างานเฉพาะในไฟล์การกำหนดค่าฤดูใบไม้ผลิ
<ภารกิจ: Scheduled-Tasks> <task: scheduled ref = "taskjob" method = "job1" cron = "0 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
คำอธิบาย: พารามิเตอร์ REF ระบุคลาสงานวิธีการระบุวิธีการที่จำเป็นต้องเรียกใช้การแสดงออกของ cron และ cronexpression วิธีการเขียนเฉพาะจะไม่ถูกนำมาใช้ที่นี่และ <บริบท: ส่วนประกอบ scan base-package = "com.alibaba.mytask" /> การสแกนสแกนสแกน
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน