Câu hỏi này có liên quan với một trong những câu hỏi trước đây của tôi ..Chặn Queue - Cần thêm thông tin
Trong đó tính chất ngăn chặn được nhắc đến như một lợi thế.
Tôi đã cố gắng phát triển một số mã đơn giản để chứng minh tính chất chặn nhưng tôi gặp khó khăn. Tôi chỉ cố gắng tạo một kích thước BlockingQueue
kích thước 4 và cố gắng thêm 5 phần tử và kết thúc bằng một số java.lang.IllegalStateException
. Ai đó có thể chỉ cho tôi một ví dụ về mã để chặn bản chất của BlockingQueue
không?
public static void main(String[] args) {
BlockingQueue<String> bq = new LinkedBlockingQueue<String>(4);
try {
bq.offer("A");
bq.offer("B");
bq.offer("C");
bq.offer("D");
bq.offer("E");
System.out.println("1 = " + bq.take());
System.out.println("2 = " + bq.take());
System.out.println("3 = " + bq.take());
System.out.println("4 = " + bq.take());
System.out.println("5 = " + bq.take());
System.out.println("6 = " + bq.take());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
tôi đã sử dụng đoạn mã này. Trong trường hợp này, tôi đang cố gắng đặt 5 phần tử vào hàng đợi với kích thước 4. Trong trường hợp này, 4 phần tử (A, B, C, D) sẽ được thêm vào hàng đợi. Sau đó, tôi gọi phương thức take()
trong khi in. Không nên chèn "E" tự động vào hàng đợi khi tôi gọi System.out.println("1 = " + bq.take());
? Bởi vì nó nhận được một khe miễn phí?
Trước đây tôi đã sử dụng Thêm + Cuộc thăm dò ý kiến. Nhưng tại thời điểm này tôi đang cố gắng đặt + Hãy –
Hmm .... Có điểm .. Thử nghiệm ngay bây giờ :) –
Tôi nên chỉ định thời gian chờ cho PUT() như thế nào? –