วิธีการใช้งานและวิธีการสืบทอดความแตกต่างคืออะไร?
*ความแตกต่าง:
*เธรดที่สืบทอดมา: รหัสเธรดถูกเก็บไว้ในวิธีการเรียกใช้ของคลาสย่อยเธรด
*ใช้งาน Runnable: รหัสเธรดถูกเก็บไว้ในวิธีการเรียกใช้ของคลาสย่อยของอินเตอร์เฟส
* ประโยชน์ของการดำเนินการ: หลีกเลี่ยงข้อ จำกัด ของการสืบทอดเดี่ยว
* เมื่อกำหนดเธรดขอแนะนำให้ใช้วิธีการใช้งาน แน่นอนว่าหากคลาสไม่ได้สืบทอดคลาสพาเรนต์การทำมัลติเธรดสามารถนำไปใช้ได้โดยการสืบทอดคลาสเธรด
*หมายเหตุ: อินเทอร์เฟซ Runnable ไม่ได้ทำข้อยกเว้นดังนั้นคลาสที่ใช้งานได้สามารถลองจับและไม่สามารถโยนได้
*Java เป็นวิธีการแก้ปัญหาระดับมืออาชีพสำหรับปัญหาความปลอดภัยของ multithreading ซึ่งเป็นการซิงโครไนซ์รหัสบล็อกซิงโครไนซ์ (วัตถุ) {รหัสที่ต้องซิงโครไนซ์}
*ข้อควรระวังสำหรับการซิงโครไนซ์:
*1. มี 2 เธรดขึ้นไป
*2. หลายเธรดใช้หนึ่งล็อค (วัตถุ)
* ประโยชน์ของการซิงโครไนซ์: แก้ปัญหาความปลอดภัยแบบหลายเธรด
* ข้อเสียของการซิงโครไนซ์: หลายเธรดจำเป็นต้องตัดสินล็อคซึ่งใช้ทรัพยากรมากขึ้น
แพ็คเกจมัลติเธรด; ตั๋วคลาสใช้งาน Runnable {// private static int tick = 100; int private int tick = 100; Object OBJ = New Object (); // สร้างภาพหรือเขียนคลาสด้วยตัวคุณเองเพื่อสร้างวัตถุ การซิงโครไนซ์ต่อไปนี้ต้องใช้คำหลัก @Overridepublic void run () {ในขณะที่ (จริง) {ซิงโครไนซ์ (obj) // ซิงโครไนซ์ (นี่) {ถ้า (ติ๊ก> 0) {ลอง {thread.sleep (10); "+(tick-)+" title "); // tick-;} else {break;}}}}} การทดสอบคลาสสาธารณะ {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {ตั๋ว t = ตั๋วใหม่ (); // สร้างคลาสที่ใช้เธรดใหม่ เธรด (t); // สร้างเธรดเธรด t3 = เธรดใหม่ (t); // สร้างเธรดเธรด t4 = เธรดใหม่ (t); // สร้างเธรด // เปิดเธรด t1.start (); t2.start (); t3.start (); t4.start ();}}}}}}}ข้างต้นเป็นเนื้อหาเต็มรูปแบบของสองวิธีในการใช้ Java มัลติเธรดเพื่อสืบทอดคลาสเธรดและวิธีการใช้อินเตอร์เฟสที่เรียกใช้งานได้ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคนและสนับสนุน wulin.com เพิ่มเติม ~