java多线程之LinkedBlockingQueue

1 LinkedBlockingQueue是一个基于链表的线程安全的阻塞队列。构造函数中可以设置队列的容量,如果没有设置则默认为整形的最大值。
如:LinkedBlockingQueue linkedBlockingQueue=new LinkedBlockingQueue(1000);//设置队列的容量为1000


2 LinkedBlockingQueue是一个线程安全的阻塞队列。是先进先出形式的。添加到队列中用put方法。put方法是一个线程安全的方法。put方法是将其值放到队列的尾部。如果队列已满则一直等待,直到有可用位置位置。保证能成功的插入到队列尾部中。
如:this.linkedBlockingQueue.put(value);


//该方法是阻塞方法,线程安全方法,将其值放入到队列中,如果队列满了,则一直等待直到队列有可放入的位置为止,


3 想要从LinkedBlockingQueue中取出元素,可以使用poll方法。poll方法是从队列的头部取出元素,如果有值则立刻返回。如果没有值则等待指定的时间(poll方法第一个参数为等待的值,第二个参数为等待的单位。如:第一个参数为5,第二个参数为秒。表示等待5秒)范围内。在等待的时间范围内如果有值则立刻范围,不用等到5秒钟。如果超过等待时间则返回null。
如:
String value=(String) this.linkedBlockingQueue.poll(timelong, TimeUnit.SECONDS);


注意:
poll方法的函数:
该方法是非阻塞方法
如果队列中有值,则从队列中立刻取出元素,
如果该队列为空,则等待指定的时间(在指定的等待时间内,如果队列有值则立即返回,如果超过指定的时间仍然没有值,则返回null)




特此说明:poll方法 三个方面:
a 如果队列有值则立刻返回。
b 如果队列没有值,则等待指定时间。在指定时间范围内如果有值则立刻返回。
c 如果超过指定时间范围。则返回null。


LinkedBlockingQueue一般使用put方法和poll方法配合使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值