您现在的位置是:课程教程文章
java中linkedblockingqueue用法
2023-12-15 21:11课程教程文章 人已围观
-
微信小程序教室预约系统(后台javaweb)源
微信小程序教室预约系统(后台javaweb)源用户首次登陆系统需要注册一个用户或直接使用微信作为账号,用户在登录平台... -
JavaWeb零基础到精通javaweb全套教程项目实
JavaWeb零基础到精通javaweb全套教程项目实讲解方式: 课程循序渐进、深入浅出,涉及到所有的知识点。学会本套教程,... -
【黑马程序员】Java高级教程Activiti工作流
【黑马程序员】Java高级教程Activiti工作流视频介绍 1.Activiti的发展速度十分迅猛,很多人在学习Activiti的相关开发知识。... -
.Javascript
.Javascript本教材支持视频+源码+素材下载到电脑上进行细分化学习,再也不用担心没有网...
在阻塞队列的增加元素时,有一种在队尾添加,队头是用来取出元素的,这种阻塞我们成为linkedblockingqueue,主要有链表构成,在队列的顺序上是先进先出。下面我们就linkedblockingqueue的概念、特点进行学习,然后在实例中找寻linkedblockingqueue的使用方法。
1.概念
由链表结构组成的有界阻塞队列。底层基于单向链表实现的阻塞队列,可以当做无界队列也可以当做有界队列来使用。
2.特点
(1)内部使用节点关联,会产生多一点内存占用
(2)使用两个重入锁分别控制元素的入队和出队,用Condition进行线程间的唤醒和等待
(3)有边界的,在默认构造方法中容量是Integer.MAX_VALUE
(4)非连续性内存空间
3.实例
import java.util.concurrent.LinkedBlockingQueue; public class Test { public static void main(String[] args) { LinkedBlockingQueue<String> mQueue = new LinkedBlockingQueue<String>(); new Thread(new Runnable() { @Override public void run() { while (true) { try { String s = mQueue.take(); System.out.println("取出数据:" + String.valueOf(s)); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); new Thread(new Runnable() { @Override public void run() { int count = 0; while (true) { System.out.println("装载数据:" + count); try { mQueue.put(String.valueOf(count)); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } count++; } } }).start(); } }
以上就是java中linkedblockingqueue用法,围绕着链表的构成展开,在使用时需要其自身的一些特点就可以了。学会后就可以运行代码,处理一些实际的阻塞队列问题。
课程教程:java中linkedblockingqueue用法下一篇:没有了