ปัญหารายละเอียดแบบมัลติเธรด
ความเหมือนและความแตกต่างระหว่างวิธีการนอนหลับและวิธีการรอ?
ความคล้ายคลึงกัน:
ออกจากเธรดในสถานะแช่แข็ง
ความแตกต่าง:
การนอนหลับจะต้องระบุเวลา
รอสามารถระบุเวลาหรือไม่
เวลานอนเพิ่มขึ้นเธรดอยู่ในสถานะการบล็อกชั่วคราวหรือสถานะการทำงาน
หากการรอไม่มีเวลาจะต้องตื่นขึ้นผ่านการแจ้งเตือนหรือแจ้งเตือน
การนอนหลับไม่จำเป็นต้องกำหนดในการซิงโครไนซ์
การรอต้องกำหนดในการซิงโครไนซ์
เมื่อทั้งหมดถูกกำหนดในการซิงโครไนซ์
Sleep ปล่อยสิทธิ์ในการดำเนินการไม่ใช่ล็อค
รอที่จะปล่อยสิทธิ์ในการดำเนินการล็อค
syschronized (obj) {wait (); // 0 1 2 รหัส ... } syschronized (obj) {notifyall (); // 3 รหัส ... }วิธีหยุดเธรด
หยุดวิธีการ
วิธีการหยุดนั้นล้าสมัย ฉันพบว่ามีวิธีแก้ปัญหาอื่น ๆ หลังจากอ่านคำอธิบาย
End End: ให้รหัสงานเธรดถูกเรียกใช้งานและวิธีการเรียกใช้จะสิ้นสุดลง
จะจบวิธีการวิ่งได้อย่างไร?
โดยการกำหนดลูป
หมายเหตุ: เขายังสามารถตัดสินเครื่องหมายได้หรือไม่ว่าเธรดอยู่ในสถานะแช่แข็งในงานหรือไม่?
สถานะขัดจังหวะที่เรียกว่าไม่ได้หมายถึงการหยุดเธรด
สถานะขัดจังหวะการขัดจังหวะเป็นสาเหตุหากเธรดเป้าหมายรอเป็นเวลานานควรใช้วิธีการขัดจังหวะเพื่อขัดจังหวะการรอการขัดจังหวะที่เรียกว่าจะไม่หยุดเธรด
ฟังก์ชั่นของการขัดจังหวะคือการล้างสถานะการแช่แข็งของเธรดและกู้คืนสถานะการรันไปยังเธรด (ให้เธรดมีคุณสมบัติอีกครั้งสำหรับการดำเนินการ CPU)
เนื่องจากเป็นข้อบังคับจะมีข้อยกเว้นขัดจังหวะการรับรู้และคุณสามารถจับข้อยกเว้นในการจับได้
ในการจัดการข้อยกเว้นให้เปลี่ยนเครื่องหมายเพื่อสิ้นสุดลูปและปล่อยให้วิธีการวิ่งสิ้นสุด
ด้ายด้วง
Daemon Thread: นอกจากนี้ยังสามารถเข้าใจได้ว่าเป็นด้ายพื้นหลังและเธรดเบื้องหน้าที่สร้างขึ้นก่อนหน้านี้เป็นด้ายเบื้องหน้าทั้งหมด
ตราบใดที่เธรดเรียก setdaemon (จริง); เธรดสามารถทำเครื่องหมายเป็นด้ายดุล
เธรดพื้นหลังส่วนหน้าจะเหมือนกันเมื่อทำงานได้รับสิทธิ์ในการดำเนินการของ CPU
เฉพาะเมื่อมันจบลงเล็กน้อย
เธรดเบื้องหน้าจะต้องจบลงด้วยวิธีการเรียกใช้และเธรดจะต้องจบลง
เธรดพื้นหลังยังสามารถจบลงด้วยวิธีการเรียกใช้และเธรดจะสิ้นสุด มีสถานการณ์อื่น
เมื่อเธรดเบื้องหน้าทั้งหมดในกระบวนการสิ้นสุดไม่ว่าจะระบุว่าเธรดพื้นหลังจะสิ้นสุดลงและกระบวนการจะสิ้นสุดลง
กระบวนการจบลงด้วยเธรดเบื้องหน้าทั้งหมดขึ้นอยู่กับ
ลำดับความสำคัญของเธรด
ลำดับความสำคัญของเธรด: ระบุด้วยตัวเลข 1-10
ในหมู่พวกเขาลำดับความสำคัญเริ่มต้นเริ่มต้นคือ 5 และระดับลำดับความสำคัญสามระดับที่ชัดเจนที่สุดคือ 1, 5 และ 10
setPriority (thread.max_priority);
กลุ่มด้าย
กลุ่มเธรด: ThreadGroup: กลุ่มเธรดที่สามารถระบุวัตถุเธรดใหม่ได้ผ่านตัวสร้างเธรด
ประโยชน์ของกลุ่มเธรดคือพวกเขาสามารถดำเนินการแบบครบวงจรในหลายเธรดในกลุ่มเดียวกัน
โดยค่าเริ่มต้นพวกเขาทั้งหมดเป็นของกลุ่มเธรดหลัก
ชั้นเรียนภายในที่ไม่ระบุชื่อ
runnable rn = new runnable () {public void run () {}}; // รหัสข้างต้นเทียบเท่ากับการใช้งานของคลาส anomymous runnable {public void run () {}} runnable rn = new anomymous ();ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!