Java认证:Java中Queue和BlockingQueue的区别

来源:java认证发布时间:2012-11-12 12:48:46java认证视频

1BlockingQueue:支持两个附加操作的 Queue,这两个操作是:检索元素时等待队列变为非空,以及存储元素时等待空间变得可用。

2BlockingQueue 不接受 null 元素。

3BlockingQueue 可以是限定容量的。

4BlockingQueue 实现是线程安全的。Queue不是线程安全的。因此可以将Blockingqueue用于用于生产者-使用者队列。

根据Api修改的一个例子,大家可以修改自己体验BlockingQueue的使用

package test;

import java.util.concurrent.ArrayBlockingQueue;

import java.util.concurrent.BlockingQueue;

/**

* 生产者

*/

class Producer implements Runnable {

private final BlockingQueue queue;

ProducerBlockingQueue q {

queue = q;

}

pubpc void run() {

try {

for int i = 0; i 3; i++ {

queue.putproduce());

System.out.println生产后:”+queue.peek());

}

} catch InterruptedException ex {

ex.printStackTrace();

}

}

Character produce() {

char c = char Math.random() * 26 + ‘A’;

System.out.println生产前:” + c;

return c;

}

}

/**

* 消费者

*/

class Consumer implements Runnable {

private final BlockingQueue queue;

ConsumerBlockingQueue q {

queue = q;

}

pubpc void run() {

try {

while true {

consumequeue.take());

//Thread.sleep100;

}

} catch InterruptedException ex {

ex.printStackTrace();

}

}

void consumeCharacter c {

System.out.println消费:” + c;

}

}

/**

* 一个生产者、两个消费者

*

*/

class Setup {

pubpc static void mainString[] args {

BlockingQueue q = new ArrayBlockingQueue1;

Producer p = new Producerq;

Consumer c1 = new Consumerq;

Consumer c2 = new Consumerq;

new Threadp.start();

new Threadc1.start();

new Threadc2.start();

}

}

–EOF–

 

 -5-3-1-+1+3+5

评分:0

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答