Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa ArrayBlockingQueue và ArrayDeque

ArrayBlockingQueue lưu trữ các phần tử theo thứ tự FIFO. Việc chèn phần tử luôn xảy ra ở phần cuối của hàng đợi và việc loại bỏ phần tử luôn xảy ra khỏi phần đầu của hàng đợi. Nó là luồng an toàn và Nó là hàng đợi mảng có giới hạn do đó khi được tạo, dung lượng sẽ không thể thay đổi được. Đây là việc triển khai hàng đợi Chặn.

Theo Java Docs -

Triển khai mảng có thể thay đổi kích thước của giao diện Deque. Array deques không có giới hạn về dung lượng; chúng phát triển khi cần thiết để hỗ trợ việc sử dụng. Chúng không an toàn theo luồng; trong trường hợp không có đồng bộ hóa bên ngoài, chúng không hỗ trợ truy cập đồng thời theo nhiều luồng. Các phần tử rỗng bị cấm. Lớp này có thể nhanh hơn Stack khi được sử dụng như một ngăn xếp và nhanh hơn LinkedList khi được sử dụng như một hàng đợi.

Sr. Không. Phím ArrayBlockingQueue ArrayDeque
1
Cơ bản
Nó triển khai giao diện BlockingQueue
Nó triển khai giao diện Deque
2 Bị giới hạn
Nó là hàng đợi mảng có giới hạn. Do đó Sau khi được tạo, dung lượng không thể thay đổi
Đó là triển khai mảng có thể thay đổi kích thước của Deque
3 An toàn Chủ đề
Nó là chủ đề an toàn
Nó không an toàn cho chuỗi
4

Chèn / Xóa
Việc chèn phần tử luôn xảy ra ở phần cuối của hàng đợi và việc loại bỏ phần tử luôn xảy ra khỏi phần đầu của hàng đợi
Nó hỗ trợ chèn và loại bỏ phần tử ở cả hai đầu