1. กำหนดคลาสที่สืบทอดคลาส Thread แทนที่วิธี run ในคลาส เรียกเมธอด start ของคลาสอ็อบเจ็กต์ วิธี start เริ่มเธรด และเรียกเมธอด run คลาส Thread ใช้เพื่ออธิบายเธรด คลาสนี้กำหนดการเรียกใช้ฟังก์ชัน ซึ่งใช้ในการจัดเก็บโค้ดที่จะเรียกใช้โดยเธรด
2. กำหนดคลาสเพื่อใช้อินเทอร์เฟซ Runnable แทนที่วิธีการในอินเทอร์เฟซ Runnable สร้างวัตถุเธรดผ่านคลาส Thread ส่งผ่านวัตถุคลาสย่อยของอินเทอร์เฟซ Runnable เป็นพารามิเตอร์จริงไปยังตัวสร้างของคลาส Thread และเรียกใช้ วิธีการเริ่มต้นของคลาสเธรดเพื่อเริ่มเธรด วิธีการเรียกใช้ในคลาสย่อยอินเทอร์เฟซ Runnable จะถูกเรียก
วิธีการใช้งานอินเทอร์เฟซ Runnable หลีกเลี่ยงข้อจำกัดที่เกิดจากการสืบทอดเพียงครั้งเดียว
ด้ายที;
T.setMaemon(true);//ตั้งค่าเธรดเป็นเธรดพื้นหลัง เธรดพื้นหลังจะสิ้นสุดโดยอัตโนมัติเมื่อเธรดเบื้องหน้าทั้งหมดสิ้นสุด
T.notify();//ปลุกกระทู้นี้ขึ้นมา;
T.notifyAll();//ปลุกทุกกระทู้;
T.interrupt();//ขัดจังหวะเธรด;
Thread.sleep(100);//หยุดเธรดชั่วคราวเป็นเวลา 100 มิลลิวินาที
ซิงโครไนซ์: ตามค่าเริ่มต้น มันจะล็อคตัวเอง และวัตถุแบบกำหนดเองก็สามารถล็อคได้เช่นกัน
ต้องมีเธรดตั้งแต่สองตัวขึ้นไปที่กำลังดำเนินการอยู่ หลายเธรดใช้การล็อกเดียวกัน ต้องแน่ใจว่ามีเธรดเดียวเท่านั้นที่ทำงานในระหว่างกระบวนการซิงโครไนซ์
กำหนดการซิงโครไนซ์: ชี้แจงว่าโค้ดใดต้องใช้การทำงานแบบมัลติเธรด ชี้แจงข้อมูลที่แชร์ และชี้แจงว่าคำสั่งใดในโค้ดที่ทำงานแบบมัลติเธรดทำงานกับข้อมูลที่แชร์
class Tickets ใช้ Runnable
-
ขีด int ส่วนตัว = 100;
public void run() { // สาธารณะ void run()
ในขณะที่ (ทำเครื่องหมาย > 0) {
ซิงโครไนซ์ (สิ่งนี้) {
ถ้า (ติ๊ก > 0) {
พยายาม {
เธรด.สลีป(100);
} จับ (InterruptedException e) {
e.printStackTrace();
-
System.out.println(this.toString() + "ขาย:" + ติ๊ก--);
-
-
-
-
ดังที่กล่าวข้างต้น: เห็บเป็นข้อมูลที่ใช้ร่วมกัน ในการใช้งานเห็บ คุณต้องดำเนินการในการซิงโครไนซ์ ล็อคแบบซิงโครไนซ์คืออะไร
กลไกการปลุกการรอ: เมื่อใช้งานเธรดการซิงโครไนซ์ จะต้องระบุการล็อคที่ถือโดยเธรดที่พวกมันทำงาน ; (คือ การรอและการตื่นต้องเป็นล็อคเดียวกัน)