BlockingQueue<String> queue = new ArrayBlockingQueue<String>(10);
for(int i=0; i<queue.size(); i++){
queue[i] = new ArrayBlockingQueue<String>();
}
System.out.println("queue size in main "+queue.size());
***// queue.size() returning 0 why???***
Thread t2 = new Thread(new AccountTransaction(queue));
t2.start();
Thread t1 = new Thread(new BankInfo(queue));
答案 0 :(得分:0)
您正在将queue
初始化为ArrayBlockingQueue
,但稍后会将其引用为BlockingQueue
的数组。
那不会编译。
最重要的是,size
方法将返回队列中的项目数,而不是其容量(您在构造函数中设置的容量)。
当您在代码中引用queue.size()
时,它将返回0
,因为队列中没有项目。
答案 1 :(得分:0)
在for循环的条件下,当你调用queue.size()时,它返回零并且循环终止而不运行正文。 System.out.println()的输出也调用queue.size(),它仍为零。尝试使用http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html#remainingCapacity()
@mena还提到你正在使用队列 - 一个集合 - 好像它是一个编译错误的数组。