สารบัญ:

เธรดสื่อสารกันอย่างไร
เธรดสื่อสารกันอย่างไร

วีดีโอ: เธรดสื่อสารกันอย่างไร

วีดีโอ: เธรดสื่อสารกันอย่างไร
วีดีโอ: Threads คืออะไร? ใช้ยังไง? แต่ละอย่างเรียกว่าอะไร? เหมือน Twitter แค่ไหน? I iT24Hrs 2024, เมษายน
Anonim

มีสามวิธีสำหรับ กระทู้ ถึง สื่อสารกัน . อย่างแรกคือผ่านข้อมูลที่ใช้ร่วมกันทั่วไป ทั้งหมด กระทู้ ในโปรแกรมเดียวกันใช้พื้นที่หน่วยความจำร่วมกัน หากวัตถุสามารถเข้าถึงได้ต่างๆ กระทู้ แล้วพวกนี้ กระทู้ แบ่งปันการเข้าถึงสมาชิกของข้อมูลของวัตถุนั้นและดังนั้น สื่อสารกัน.

ผู้คนยังถามว่าคุณสื่อสารระหว่างสองเธรดได้อย่างไร

ทำความเข้าใจกระบวนการสื่อสารระหว่างเธรด

  1. เธรดเข้ามาเพื่อรับการล็อค
  2. ล็อคได้มาจากเธรด
  3. ตอนนี้เธรดจะเข้าสู่สถานะรอหากคุณเรียกใช้เมธอด wait() บนวัตถุ
  4. หากคุณเรียกใช้เมธอด notify() หรือ notifyAll() เธรดจะย้ายไปยังสถานะที่แจ้งเตือน (สถานะที่รันได้)

ประการที่สอง วิธีรอในเธรดคืออะไร พูดง่ายๆ ว่า รอ () เป็นตัวอย่าง กระบวนการ ที่ใช้สำหรับ เกลียว การซิงโครไนซ์ สามารถเรียกใช้บนวัตถุใดก็ได้ตามที่กำหนดไว้บน java แลง อ็อบเจ็กต์ แต่สามารถเรียกได้จากบล็อกที่ซิงโครไนซ์เท่านั้น มันคลายล็อคบนวัตถุเพื่อให้อื่น เกลียว สามารถกระโดดเข้าและรับล็อค

นอกจากนี้ คุณจะบรรลุการสื่อสารระหว่างเธรดได้อย่างไร

การสื่อสารระหว่างเธรดใน Java

  1. wait()-มันบอกให้เธรดที่เรียกยกเลิกการล็อคและเข้าสู่โหมดสลีปจนกว่าเธรดอื่นจะเข้าสู่จอภาพเดียวกันและโทรแจ้ง ()
  2. notify()-มันปลุกหนึ่งเธรดเดียวที่เรียกว่า wait() บนวัตถุเดียวกัน
  3. notifyAll()-มันปลุกเธรดทั้งหมดที่เรียกว่า wait() บนวัตถุเดียวกัน

คุณใช้ wait และ notify ในเธรด Java ได้อย่างไร

เมื่อใช้การซิงโครไนซ์ (สิ่งนี้) คุณต้องหลีกเลี่ยงการซิงโครไนซ์การเรียกใช้เมธอดของอ็อบเจ็กต์อื่น รอ () บอกการโทร เกลียว เลิกเฝ้าจอแล้วไปนอนซะ เกลียว เข้าสู่จอภาพเดียวกันและการโทร แจ้ง (). แจ้ง () ตื่นก่อน เกลียว ที่เรียกว่า รอ () บนวัตถุเดียวกัน