Tôi đang sử dụng LinkedBlockingQueue
giữa hai chủ đề khác nhau. Một chuỗi thêm dữ liệu qua add
, trong khi luồng khác nhận dữ liệu qua take
.ThreadBlockingQueue có chèn và loại bỏ các phương thức an toàn không?
Câu hỏi của tôi là, tôi có cần phải đồng bộ hóa quyền truy cập vào add
và take
. Có phải chuỗi chèn và loại bỏ phương thức an toàn của LinkedBlockingQueue
không?
không phải là nó thực sự. Không, không phải nếu bạn chỉ sử dụng thêm và mất, nhưng nếu bạn sẽ sử dụng một hoạt động số lượng lớn, bạn sẽ phải đồng bộ hóa nó thay vì chỉ đơn giản là "Có"? Hoặc tôi đọc doc sai? – cproinger
@cproinger, không, bạn không bao giờ phải đồng bộ hóa nó, miễn là bạn sẵn sàng đối phó với 'addAll' ném một ngoại lệ sau khi thêm một tập con của các mục (hoặc tương tự). Nó phụ thuộc vào cách bạn xác định thread-safe. Bạn nói đúng rằng các phương thức hàng loạt không có đảm bảo nguyên tử. –
Có phải 'remove' cũng là chủ đề an toàn không? – q126y