ฉันพบคำถามคล้าย ๆ กันที่ถามที่นี่ แต่ไม่มีคำตอบสำหรับความพึงพอใจของฉัน ดังนั้นจึงเปลี่ยนคำถามอีกครั้ง -
ฉันมีงานที่ต้องทำเป็นระยะ (พูดช่วงเวลา 1 นาที) อะไรคือข้อดีของการใช้ Timertask & Timer เพื่อทำสิ่งนี้ซึ่งต่างจากการสร้างเธรดใหม่ที่มีการวนซ้ำแบบไม่มีที่สิ้นสุดพร้อมกับโหมดสลีป
ข้อมูลโค้ดโดยใช้ timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
ข้อมูลโค้ดโดยใช้เธรดและสลีป -
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
ฉันไม่ต้องกังวลจริงๆถ้าฉันพลาดบางรอบหากการดำเนินการของตรรกะใช้เวลามากกว่าช่วงเวลา
แสดงความคิดเห็นได้ที่นี้ ..
อัปเดต:
เมื่อเร็ว ๆ นี้ฉันพบความแตกต่างอีกอย่างระหว่างการใช้ Timer กับ Thread.sleep () สมมติว่าเวลาของระบบปัจจุบันคือ 11.00 น. หากเราย้อนกลับเวลาของระบบเป็น 10:00 น. ด้วยเหตุผลบางประการตัวจับเวลาจะหยุดดำเนินการงานจนกว่าจะถึง 11:00 น. ในขณะที่เมธอด Thread.sleep () จะดำเนินการงานต่อไปโดยไม่มีอุปสรรค สิ่งนี้สามารถเป็นผู้ตัดสินใจหลักในการตัดสินใจว่าจะใช้อะไรระหว่างสองสิ่งนี้