วิธีการหมดเวลาของเธรด
ฉันต้องการเรียกใช้เธรดในระยะเวลาที่แน่นอน หากยังไม่แล้วเสร็จภายในเวลานั้นฉันต้องการฆ่าทิ้งข้อยกเว้นหรือจัดการบางอย่าง จะทำอย่างไร? วิธีหนึ่งในการทำตามที่ฉันคิดออกจากหัวข้อนี้ คือการใช้ TimerTask ภายในเมธอด run () ของเธรด มีวิธีแก้ปัญหาที่ดีกว่านี้หรือไม่? แก้ไข: เพิ่มรางวัลตามที่ฉันต้องการคำตอบที่ชัดเจน รหัส ExecutorService ที่ระบุด้านล่างไม่สามารถแก้ไขปัญหาของฉันได้ ทำไมฉันถึงควรหลับ () หลังจากทำการประมวลผล (บางรหัส - ฉันไม่มีส่วนจัดการกับรหัสนี้) หากรหัสเสร็จสมบูรณ์และ sleep () ถูกขัดจังหวะจะเป็น timeOut ได้อย่างไร งานที่ต้องดำเนินการไม่ได้อยู่ในการควบคุมของฉัน มันอาจเป็นรหัสใด ๆ ปัญหาคือรหัสชิ้นส่วนนี้อาจทำงานเป็นวงวนไม่สิ้นสุด ฉันไม่ต้องการที่จะเกิดขึ้น ดังนั้นฉันแค่ต้องการที่จะทำงานในหัวข้อแยก เธรดหลักต้องรอจนกว่าเธรดนั้นจะเสร็จสิ้นและจำเป็นต้องทราบสถานะของงาน (เช่นไม่ว่าจะหมดเวลาหรือมีข้อยกเว้นเกิดขึ้นหรือประสบความสำเร็จ) หากงานเข้าสู่วงวนไม่สิ้นสุดเธรดหลักของฉันจะคอยเรื่อย ๆ ซึ่งไม่ใช่สถานการณ์ในอุดมคติ