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

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


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

ตาม Java Docs -

การใช้งาน Resizable-array ของอินเทอร์เฟซ Deque Array deque ไม่มีข้อจำกัดด้านความจุ พวกเขาเติบโตตามความจำเป็นเพื่อรองรับการใช้งาน ไม่ปลอดภัยสำหรับเธรด ในกรณีที่ไม่มีการซิงโครไนซ์ภายนอก พวกเขาไม่สนับสนุนการเข้าถึงพร้อมกันโดยหลายเธรด องค์ประกอบที่เป็นโมฆะเป็นสิ่งต้องห้าม คลาสนี้มีแนวโน้มที่จะเร็วกว่า Stack เมื่อใช้เป็นสแต็ก และเร็วกว่า LinkedList เมื่อใช้เป็นคิว

ซีเนียร์ เลขที่ คีย์ ArrayBlockingQueue ArrayDeque
1
พื้นฐาน
มันใช้อินเทอร์เฟซ BlockingQueue
มันใช้อินเทอร์เฟซ Deque
2 ถูกผูกไว้
เป็นคิวอาเรย์ที่มีขอบเขต ดังนั้นเมื่อสร้างแล้วจะไม่สามารถเปลี่ยนความจุได้
เป็นการนำ Deque ไปใช้งานแบบปรับขนาดได้
3 ความปลอดภัยของเธรด
เป็นเธรดที่ปลอดภัย
มันไม่ปลอดภัยสำหรับเธรด
4

การแทรก /Removal
การแทรกองค์ประกอบเกิดขึ้นที่ส่วนท้ายของคิวเสมอ และการลบองค์ประกอบนั้นเกิดขึ้นจากส่วนหัวของคิวเสมอ
รองรับการแทรกและลบองค์ประกอบที่ปลายทั้งสองข้าง