สารบัญ:
วีดีโอ: เธรดสื่อสารกันอย่างไร
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
มีสามวิธีสำหรับ กระทู้ ถึง สื่อสารกัน . อย่างแรกคือผ่านข้อมูลที่ใช้ร่วมกันทั่วไป ทั้งหมด กระทู้ ในโปรแกรมเดียวกันใช้พื้นที่หน่วยความจำร่วมกัน หากวัตถุสามารถเข้าถึงได้ต่างๆ กระทู้ แล้วพวกนี้ กระทู้ แบ่งปันการเข้าถึงสมาชิกของข้อมูลของวัตถุนั้นและดังนั้น สื่อสารกัน.
ผู้คนยังถามว่าคุณสื่อสารระหว่างสองเธรดได้อย่างไร
ทำความเข้าใจกระบวนการสื่อสารระหว่างเธรด
- เธรดเข้ามาเพื่อรับการล็อค
- ล็อคได้มาจากเธรด
- ตอนนี้เธรดจะเข้าสู่สถานะรอหากคุณเรียกใช้เมธอด wait() บนวัตถุ
- หากคุณเรียกใช้เมธอด notify() หรือ notifyAll() เธรดจะย้ายไปยังสถานะที่แจ้งเตือน (สถานะที่รันได้)
ประการที่สอง วิธีรอในเธรดคืออะไร พูดง่ายๆ ว่า รอ () เป็นตัวอย่าง กระบวนการ ที่ใช้สำหรับ เกลียว การซิงโครไนซ์ สามารถเรียกใช้บนวัตถุใดก็ได้ตามที่กำหนดไว้บน java แลง อ็อบเจ็กต์ แต่สามารถเรียกได้จากบล็อกที่ซิงโครไนซ์เท่านั้น มันคลายล็อคบนวัตถุเพื่อให้อื่น เกลียว สามารถกระโดดเข้าและรับล็อค
นอกจากนี้ คุณจะบรรลุการสื่อสารระหว่างเธรดได้อย่างไร
การสื่อสารระหว่างเธรดใน Java
- wait()-มันบอกให้เธรดที่เรียกยกเลิกการล็อคและเข้าสู่โหมดสลีปจนกว่าเธรดอื่นจะเข้าสู่จอภาพเดียวกันและโทรแจ้ง ()
- notify()-มันปลุกหนึ่งเธรดเดียวที่เรียกว่า wait() บนวัตถุเดียวกัน
- notifyAll()-มันปลุกเธรดทั้งหมดที่เรียกว่า wait() บนวัตถุเดียวกัน
คุณใช้ wait และ notify ในเธรด Java ได้อย่างไร
เมื่อใช้การซิงโครไนซ์ (สิ่งนี้) คุณต้องหลีกเลี่ยงการซิงโครไนซ์การเรียกใช้เมธอดของอ็อบเจ็กต์อื่น รอ () บอกการโทร เกลียว เลิกเฝ้าจอแล้วไปนอนซะ เกลียว เข้าสู่จอภาพเดียวกันและการโทร แจ้ง (). แจ้ง () ตื่นก่อน เกลียว ที่เรียกว่า รอ () บนวัตถุเดียวกัน