Java: ตัวอย่างผู้บริโภคของผู้ผลิต – จัดการการอ่าน/เขียนพร้อมกัน

เผยแพร่แล้ว: 2019-02-17

ตัวอย่างผู้บริโภคของผู้ผลิต - จัดการการอ่านพร้อมกัน: เขียน

producer-consumer problem (หรือที่เรียกว่า bounded-buffer problem ) เป็นตัวอย่าง Java คลาสสิกของปัญหาการซิงโครไนซ์หลายกระบวนการ

ปัญหาอธิบายสองกระบวนการ the producer และ the consumer ที่ใช้บัฟเฟอร์ขนาดคงที่ร่วมกันที่ใช้เป็นคิว หน้าที่ของโปรดิวเซอร์คือการสร้างข้อมูลบางส่วน ใส่ลงในบัฟเฟอร์แล้วเริ่มใหม่อีกครั้ง

ในเวลาเดียวกัน ผู้บริโภคกำลังใช้ข้อมูล (เช่น ลบออกจากบัฟเฟอร์) ทีละชิ้น ปัญหาคือต้องแน่ใจว่าผู้ผลิตจะไม่พยายามเพิ่มข้อมูลลงในบัฟเฟอร์หากเต็มและผู้บริโภคจะไม่พยายามลบข้อมูลออกจากบัฟเฟอร์ว่าง

ด้านล่างโปรแกรม Java อย่างง่ายจะสร้างปัญหานี้:

ตัวอย่าง Java – ปัญหาผู้บริโภคของผู้ผลิต

ปัญหา:

ปณิธาน:

เพิ่มคำหลักที่ synchronized เพื่อล็อค data ในขณะที่เรากำลังใช้งาน

โปรแกรม Java ที่ดีกว่า:

ผลลัพธ์ตัวอย่างผู้บริโภคของผู้ผลิต Java:

java-producer-consumer-tutorial-crunchify