Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง ArrayBlockingQueue และ LinkedBlockingQueue


อินเตอร์เฟสคิวการบล็อกเป็นส่วนหนึ่งของแพ็คเกจ Java.util.concurrent คิวการบล็อกได้รับการออกแบบมาเป็นพิเศษสำหรับคิวผู้บริโภคของผู้ผลิตและยังสนับสนุนการรวบรวม อินเทอร์เฟซนี้แบ่งออกเป็นสี่ส่วนของเมธอดเพื่อรองรับการทำงานทุกประเภทที่สามารถทำได้ผ่านคิว ไม่ยอมรับคีย์ null ArrayBlockingQueue และ LinkedBlockingQueue ใช้อินเทอร์เฟซคิวการบล็อก

ArrayBlockingQueue และ LinkedBlockingQueue จัดเก็บองค์ประกอบตามลำดับ FIFO ในทั้งสองคิว การแทรกองค์ประกอบจะเกิดขึ้นที่ส่วนท้ายของคิวเสมอ และการนำองค์ประกอบออกจากส่วนหัวของคิวเสมอ

ซีเนียร์ เลขที่ คีย์ ArrayBlockingQueue LinkedBlockingQueue
1
พื้นฐาน
สนับสนุนโดย Array
สนับสนุนโดย Linked list
2
ถูกผูกไว้
เป็นคิวอาร์เรย์ที่มีขอบเขต ดังนั้น เมื่อสร้างแล้วจะไม่สามารถเปลี่ยนความจุได้
ไม่จำกัดคิว
3
ปริมาณงาน
มีปริมาณงานต่ำกว่าคิวที่เชื่อมโยง
คิวที่เชื่อมโยงมีปริมาณงานสูงกว่าคิวแบบอาร์เรย์
4.
ล็อค
มันใช้อัลกอริธึมเงื่อนไขคู่แบบล็อกเดี่ยว
มี putLock สำหรับแทรกองค์ประกอบในคิวและ takeLock สำหรับลบองค์ประกอบออกจากคิว