ฉันได้ติดตั้งโปรแกรมแบบมัลติเธรดที่เกี่ยวข้องกับการวางเธรดสำหรับผู้ใช้แต่ละคน และดำเนินกิจกรรมเล็กๆ น้อยๆ บางอย่าง (ไม่มีกระบวนการที่ละเอียดถี่ถ้วน เช่น การเชื่อมต่อฐานข้อมูลที่เกี่ยวข้อง) เธรดหลักทำงานอย่างไม่มีที่สิ้นสุด และการสิ้นสุดของเธรดจะได้รับการจัดการผ่านการตรวจสอบกิจกรรมการสร้างไฟล์ คำถามของฉันคือ เป็นไปได้หรือไม่ที่จะยุติเธรดหลักทันทีโดยไม่ต้องรอให้เธรดเสร็จสิ้น (สมมติว่าเธรดจะเสร็จสิ้นด้วยตัวเอง (!) อาจเป็นสมมติฐานที่ผิด)
ยุติเธรดหลักโดยไม่รับประกันว่าเธรดที่สร้างจะสิ้นสุด
คำตอบ (3)
แน่นอน.
เธรดหลักเป็นเพียงเธรดเดียวจากคนอื่นๆ และการยุติเธรดนั้นจะไม่ส่งผลกระทบต่อเธรดอื่นๆ (ยกเว้นในกรณีที่คุณไม่ได้ใช้ System.exit()
เพื่อหยุดเธรด...)
เธรดหลักเป็นเพียงเธรดแรก*) ที่ได้เริ่มต้น แต่ไม่มีคุณลักษณะหรือฟังก์ชันพิเศษหรือที่ซ่อนอยู่
*) เพื่อให้ง่าย - jvm อาจเริ่มเธรด ภายใน ก่อน main - แต่แอปพลิเคชันไม่มีรหัสสำหรับเธรดเหล่านั้น
ใช่ ประเด็นของเธรดคือเธรดเหล่านั้นทำงานอย่างเป็นอิสระ
มันจะสำคัญถ้าเธรดไคลเอนต์ของคุณเริ่มต้นเป็นเธรด daemon และ main
เป็นเธรดเดียวที่ไม่ใช่ daemon (ในกรณีนี้แอปพลิเคชันจะปิดตัวลงเมื่อหยุดทำงาน)
ใช่ และโดยปกติแล้วจะเป็นเช่นนั้นในใบสมัครส่วนใหญ่ เธรดหลักมักจะมีความรับผิดชอบในการเริ่มต้นระบบ และอาจตายอย่างสงบหลังจากนั้น
โปรดทราบว่าคุณไม่ได้ "ยุติ" เธรดหลักจริงๆ แต่เพียงปล่อยให้เธรดหลักดำเนินการจนเสร็จสิ้น และนั่นก็โอเค