问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于JAVA队列的申明

发布网友 发布时间:2022-04-25 12:16

我来回答

2个回答

热心网友 时间:2022-04-08 20:12

我这里有一个测试代码,其中可以很明显的看到其中区别
public class QueueTest {
public static void main(String[] args) {
BlockingQueue<String> blockQueue = new LinkedBlockingQueue<String>();//new SynchronousQueue<String>()
class QueuePuter implements Runnable{
private BlockingQueue queue;
public QueuePuter(BlockingQueue queue) {
this.queue = queue;
}

public void run() {
try {
for(int i=0;i<10;i++){
queue.put("Item "+i);
System.out.println("Put >>> Item "+i);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

class QueueTaker implements Runnable{
private BlockingQueue queue;
public QueueTaker(BlockingQueue queue) {
this.queue = queue;
}
public void run() {
try {
Object obj = null;
while((obj = queue.take())!=null){
System.out.println("Take >>> "+obj);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

new Thread(new QueueTaker(blockQueue)).start();
//如果是 SynchronousQueue 把这行注释掉 程序会阻塞,说明如果没有线程执行take()操作则所有线程的put()操作都会被阻塞。
//如果是 LinkedBlockingQueue 把这行注释掉 程序会正常退出,说明就算没有take()操作的线程,所有线程的put()操作也可以把所有数据写入管道,而且管道容量可以不限。

new Thread(new QueuePuter(blockQueue)).start();
//如果是 SynchronousQueue 把这行注释掉 程序会阻塞, 说明如果没有线程执行put()操作则所有线程take()都会被阻塞。而且take()操作执行了几次,put()操作也只能执行几次,说明管道是没有容量的,同时只能操作一个元素。
//如果是 LinkedBlockingQueue 把这行注释掉 程序会阻塞, 说明如果管道是空的并且没有线程执行put()操作则所有线程take()都会被阻塞。

}
}

热心网友 时间:2022-04-08 21:30

ConcurrentLinkedQueue 并发链接队列
LinkedBlockingQueue 链接阻塞队列
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦字最佳名字组合 男宝宝取名梦什么名字 带梦的男孩名字大全集 带梦字的男孩名字有哪些? 联想fn是哪个键 联想电脑怎么设置fn 国庆煲剧指南|板鸭小姐姐Netflix私藏之追剧清单 韩剧tv停更后,大家哪里去看这些资源了呢? 韩剧tv在哪给剧集打分 剧集打分操作教程分享 使用翻转课堂的用户是 老师,您好!我是新手,想买佳能700D单机配腾龙18-200的镜头,听说18... java两个类A,B中分别都有一个线程,怎样能让A的线程中得到B类中线程的值... 如何让线程池里面的线程按照顺序执行 java并发包有哪些类 为什么BlockingQueue.take不释放线程 httpclient发post请求加入队列和多线程来处理请求 多线程的队列blockqueue如何理解 linkedblockingqueue遍历需要加锁吗 LinkedBlockingQueue中head,last字段没有被final修饰如何保证初始化安全... threadpoolexecutor 的linkedblockingqueue 队列 需要关闭吗_百度知 ... linkedblockingqueue怎么停止和开始任务 ArrayBlockingQueue和LinkedBlockingQueue的区别 LinkedBlockingQueue和ArrayBlockingQueue的异同 我手机接收的短信字体变大了如何调小 苹果12promax充电时候玩游戏死机 苹果12promax 微信使用突然出现黑热半屏并重启问题,代码是&quot;SOCD report... cvv2错误是什么意思 iphone12promax绿屏 macbook pro 2012 双系统蓝屏,怎么处理? 开通手机支付功能里那个CVV2是什么意思? mac pro开机后一直蓝屏怎么办? java arrayblockingqueue有thread.interrupt机制吗 阻塞队列在内存中吗? 男孩瑾字起名有哪些? 男孩叫个瑾后面跟什么字好听? 带瑾字的男孩名字? 男生,名字后面带个瑾字,前面加什么字最好听? 带瑾字的名字,最好瑾字在前面,男孩女孩都要~ 姓张带瑾的男孩名字 我想给儿子取名怀瑾,不知道会不会太大了,不是有个大师是南怀谨嚒... 求带瑾字的男生唯美网名。2个字的 瑾是代表男孩儿还是女孩? 王嘉尔点赞粉丝评论对此你有什么看法? 有个男生总是在微博评论和点赞我是什么意思? 我的偶像在微博回复我了 如何通过新浪微博客户端为自己偶像的作品点赞 王俊凯王源易烊千玺点赞7年前获奖微博,你怎样评价他们所组成的组合... 我发了一条对偶像的崇拜没有停过的微博,然后一个男生评论我金樽清酒斗十 ... 给男生有时点赞或艾特他微博有时还有互动评论还约约见过一次面的女生是... 杨紫生日微博评论登热搜,粉丝有多用心呢? 如何看待粉丝在偶像微博下刷几千条评论的行为?