在阻塞队列的增加元素时,有一种在队尾添加,队头是用来取出元素的,这种阻塞我们成为linkedblockingqueue,主要有链表构成,在队列的顺序上是先进先出。下面我们就linkedblockingqueue的概念、特点进行学习,然后在实例中找寻linkedblockingqueue的使用方法。
1.概念
由链表结构组成的有界阻塞队列。底层基于单向链表实现的阻塞队列,可以当做无界队列也可以当做有界队列来使用。
2.特点
(1)内部使用节点关联,会产生多一点内存占用
(2)使用两个重入锁分别控制元素的入队和出队,用Condition进行线程间的唤醒和等待
(3)有边界的,在默认构造方法中容量是Integer.MAX_VALUE
(4)非连续性内存空间
3.实例
importjava.util.concurrent.LinkedBlockingQueue; publicclassTest{ publicstaticvoidmain(String[]args){ LinkedBlockingQueue<String>mQueue=newLinkedBlockingQueue<String>(); newThread(newRunnable(){ @Override publicvoidrun(){ while(true){ try{ Strings=mQueue.take(); System.out.println("取出数据:"+String.valueOf(s)); }catch(InterruptedExceptione){ e.printStackTrace(); } } } }).start(); newThread(newRunnable(){ @Override publicvoidrun(){ intcount=0; while(true){ System.out.println("装载数据:"+count); try{ mQueue.put(String.valueOf(count)); Thread.sleep(2000); }catch(InterruptedExceptione){ e.printStackTrace(); } count++; } } }).start(); } }
原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容