这个问题与我之前的一个问题有关...
上一篇文章
在那里提到了阻塞性质作为优点。
我尝试编写一些简单的代码来演示阻塞性质,但是我卡住了。我只是尝试创建一个大小为4的
我使用了这段代码。在这种情况下,我试图将5个元素放入大小为4的队列中。在这种情况下,应该向队列中添加4个元素(A、B、C、D)。然后我在打印时调用
我尝试编写一些简单的代码来演示阻塞性质,但是我卡住了。我只是尝试创建一个大小为4的
BlockingQueue
,并尝试添加5个元素,结果遇到了java.lang.IllegalStateException
。有人能给我展示一个BlockingQueue
阻塞性质的代码示例吗?
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();
}
}
我使用了这段代码。在这种情况下,我试图将5个元素放入大小为4的队列中。在这种情况下,应该向队列中添加4个元素(A、B、C、D)。然后我在打印时调用
take()
方法。当我调用System.out.println("1 = " + bq.take());
时,"E"不应该自动插入队列中吗?因为它会得到一个空闲的槽位?