ArrayBlockingQueue เก็บองค์ประกอบในลำดับ FIFO การแทรกองค์ประกอบเกิดขึ้นที่ส่วนท้ายของคิวเสมอ และการลบองค์ประกอบนั้นเกิดขึ้นจากส่วนหัวของคิวเสมอ เป็นเธรดที่ปลอดภัยและเป็นคิวอาเรย์ที่มีขอบเขต ดังนั้นเมื่อสร้างแล้ว ความจุจะไม่สามารถเปลี่ยนแปลงได้ เป็นการดำเนินการตามคิวการบล็อก
ตาม Java Docs -
การใช้งาน Resizable-array ของอินเทอร์เฟซ Deque Array deque ไม่มีข้อจำกัดด้านความจุ พวกเขาเติบโตตามความจำเป็นเพื่อรองรับการใช้งาน ไม่ปลอดภัยสำหรับเธรด ในกรณีที่ไม่มีการซิงโครไนซ์ภายนอก พวกเขาไม่สนับสนุนการเข้าถึงพร้อมกันโดยหลายเธรด องค์ประกอบที่เป็นโมฆะเป็นสิ่งต้องห้าม คลาสนี้มีแนวโน้มที่จะเร็วกว่า Stack เมื่อใช้เป็นสแต็ก และเร็วกว่า LinkedList เมื่อใช้เป็นคิว
ซีเนียร์ เลขที่ | คีย์ | ArrayBlockingQueue | ArrayDeque |
---|---|---|---|
1 | พื้นฐาน | มันใช้อินเทอร์เฟซ BlockingQueue | มันใช้อินเทอร์เฟซ Deque |
2 | ถูกผูกไว้ | เป็นคิวอาเรย์ที่มีขอบเขต ดังนั้นเมื่อสร้างแล้วจะไม่สามารถเปลี่ยนความจุได้ | เป็นการนำ Deque ไปใช้งานแบบปรับขนาดได้ |
3 | ความปลอดภัยของเธรด | เป็นเธรดที่ปลอดภัย | มันไม่ปลอดภัยสำหรับเธรด |
4 | การแทรก /Removal | การแทรกองค์ประกอบเกิดขึ้นที่ส่วนท้ายของคิวเสมอ และการลบองค์ประกอบนั้นเกิดขึ้นจากส่วนหัวของคิวเสมอ | รองรับการแทรกและลบองค์ประกอบที่ปลายทั้งสองข้าง |