双缓冲队列

来源:互联网 发布:文档加密软件下载 编辑:程序博客网 时间:2024/05/18 02:37

例一: 首先,使用ArrayBlockingQueue类创建一个大小为10的双缓冲队列queue;然后,循环20次向队列queue中添加元素,如果5秒内元素仍没有入队到队列中,则返回false

代码如下:

public class Demo03 {public static void main(String[] args) {BlockingQueue<Integer> queue =new ArrayBlockingQueue<Integer>(10);boolean flag;for(int i=1;i<=20;i++){try {flag = queue.offer(i,1,TimeUnit.SECONDS);System.out.println(i+":"+flag);} catch (InterruptedException e) {e.printStackTrace();}}}}
测试结果:

1:true2:true3:true4:true5:true6:true7:true8:true9:true10:true11:false12:false13:false14:false15:false16:false17:false18:false19:false20:false
先直接输出10次true,然后每隔1秒输出false


例二:首先,使用ArrayBlockingQueue类创建一个大小为10的双缓冲队列queue;然后,将0到9,10个数字加入到队列queue中;最后,循环20次从队列queue中取元素,如果5秒内还没有元素可取出则返回null。

代码如下:

public class Demo03 {public static void main(String[] args) {BlockingQueue<Integer> queue =new ArrayBlockingQueue<Integer>(10);for(int i=0;i<10;i++){queue.offer(i);}for(int i=1;i<=20;i++){Integer in;try {in = queue.poll(1,TimeUnit.SECONDS);System.out.println(in);} catch (InterruptedException e) {e.printStackTrace();}}}}
结果如下:

0123456789nullnullnullnullnullnullnullnullnullnull
先直接输出0-9,然后每隔1秒钟输出一次null




0 0
原创粉丝点击