ใน Java เธรดแบ่งออกเป็นสองประเภท: เธรดผู้ใช้และเธรด daemon (บริการ) setdaemon (เท็จ) ไปยังเธรดผู้ใช้; Setdaemon (จริง) ไปที่ด้าย daemon; หากไม่ได้ตั้งค่าจะเป็นเธรดผู้ใช้
ในการจบเธรดเดียวให้ใช้เมธอด thread.interrupt () และเพื่อจบมัลติเธรดคุณต้องตั้งเธรด daemon เมื่อไม่มีเธรดผู้ใช้เธรด daemon ทั้งหมดจะยุติ (สามารถเข้าใจได้ว่า: เธรด daemon คือเธรดบริการเธรดผู้ใช้คือเธรดบริการเธรดผู้ใช้ (เธรดบริการ) หายไปและเธรดบริการจะสิ้นสุดโดยอัตโนมัติโดยไม่มีความหมายของการดำรงอยู่)
ตัวอย่าง:
คลาส StopThread ดำเนินการ runnable {public void run () {// constructor ในขณะที่ (จริง) ถูกดำเนินการโดยค่าเริ่มต้นในระหว่างการสร้างอินสแตนซ์ {// ลูปจริงถาวรจะใช้เพื่อตรวจจับว่าเธรด daemon จะจบระบบโดยอัตโนมัติ {stopThread st = new StopThread (); เธรด t1 = เธรดใหม่ (ST); // สร้างเธรดเธรดใหม่ t2 = เธรดใหม่ (ST); T1.SetDaemon (จริง); // ตั้งเป็นเธรด daemon (บริการ) เมื่อเธรดผู้ใช้ถูกแขวนอย่างเต็มที่เธรด daemon ทั้งหมดจะแขวน t2.setdaemon (จริง); t1.start (); // เธรดเริ่ม t2.start (); int num = 0; ในขณะที่ (จริง) {ถ้า (num ++ == 10) {break;} system.out.out.println (เธรด num);} system.out.println ("over");}}เมื่อมีการดำเนินการประโยคสุดท้าย System.out.println ("over")) จะดำเนินการเธรดผู้ใช้ (โปรแกรมหลัก) จะสิ้นสุดลง; สองเธรด daemon ที่ส่งออกข้อมูลอย่างต่อเนื่องในการวนซ้ำถาวรแบ็กเอนด์จะสิ้นสุดโดยอัตโนมัติ
อีกคำถามทั่วไปที่แนะนำ: นี่เป็นเรื่องจริงหรือไม่ถ้าเธรดที่ไม่ใช่ Daemon ทั้งหมดใน Java End, Daemon ทั้งหมดออกโดยอัตโนมัติหรือไม่?
คำตอบอ้างอิง:
ฟังก์ชั่นเดียวของเธรด daemon คือการให้บริการกับเธรดอื่น ๆ เมื่อมีเพียงเธรด daemon ที่เหลืออยู่เครื่องเสมือนออกจาก” (จาก: เทคโนโลยี Java Core) ตอนนี้ไม่มีการป้องกันดังนั้นจึงไม่จำเป็นต้องให้ Daemon ให้บริการ
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับอินสแตนซ์เธรด Daemon ในการเลิกจ้างภาษา Java แบบมัลติเธรด ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!