Deque

来源:互联网 发布:java object finalize 编辑:程序博客网 时间:2024/06/11 22:43

Deque也继承了Queue接口,所以具有和Queue相同的特性,相对于Queue的如果一端进,那另一端只能出,Deque的两端都可以进出,api的灵活组合可以实现不同的结构。

用Deque来实现栈

1、生产者

public class Producer implements Runnable {    private BlockingDeque queue;    public Producer(BlockingDeque queue) {        this.queue = queue;    }    @Override    public void run() {        for (int i = 0; i < 10; i++) {            try {                queue.putFirst(i);                System.out.println("我在首端放进去了" + i);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}


2、消费者

public class Customer implements Runnable {    private BlockingDeque queue;    public Customer(BlockingDeque queue) {        this.queue = queue;    }    @Override    public void run() {        try {            Thread.sleep(2000);            while (true) {                System.out.println("--我从首端拿出来了" + queue.takeFirst());            }        } catch (InterruptedException e) {            e.printStackTrace();        }    }}


3、输出

public class BlockingQueueExample {    public static void main(String[] args) {        BlockingDeque blockingDeque = new LinkedBlockingDeque<>(100);        Producer producer = new Producer(blockingDeque);        Customer customer = new Customer(blockingDeque);        new Thread(producer).start();        new Thread(customer).start();    }}

我在首端放进去了0
我在首端放进去了1
我在首端放进去了2
我在首端放进去了3
我在首端放进去了4
我在首端放进去了5
我在首端放进去了6
我在首端放进去了7
我在首端放进去了8
我在首端放进去了9
--我从首端拿出来了9
--我从首端拿出来了8
--我从首端拿出来了7
--我从首端拿出来了6
--我从首端拿出来了5
--我从首端拿出来了4
--我从首端拿出来了3
--我从首端拿出来了2
--我从首端拿出来了1
--我从首端拿出来了0



原创粉丝点击