LinkedBlockingQueue特点:
1、数据结构:单向链表;
2、有界队列,默认长度为:Integer.MAX_VALUE;
3、和ArrayBlockingQueue一样,不允许放入空值;
4、元素按FIFO排序;
对比ArrayBlockingQueue:
1、存储结构不同,ArrayBlockingQueue 采用对象数组存储数据;LinkedBlockingQueue采用单向链表存储数据;
2、构造不同,ArrayBlockingQueue必须指定长度,且可以指定是否使用公平锁定及初始集合;而LinkedBlockingQueue可以不指定长度,默认值是Integer.MAX_VALUE,另外LinkedBlockingQueue不支持参数化设置公平锁或非公平锁,默认是非公平锁:NonfairSync;
3、操作方法相同,ArrayBlockingQueue放入元素:add(抛异常)、offer(返回true、false)、put(阻塞等待),取出元素:poll、take;而LinkedBlockingQueue也都一样;
生产者消费者模式中都可以使用阻塞队列,关键是要用put阻塞方法和take阻塞方法;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;