线程池中的工作队列

1.接口BlockingQueue 双缓冲队列,内部使用两条队列,允许两个线程同时向队列做操作,一个存储,一个取出。 在保证并发安全的同时,提高了队列的存取效率。 该队列继承于Queue,所以遵循先进先出原则(FIFO)

队列提供几种基本的操作:

>添加元素(队尾)

>移除元素(队头)

>取出队头元素(不移除)

该接口的实现类;

1) ArrayBlockingQueue :采用数组实现,规定大小的BlockingQueue,其构造必须指定大小。所含的对象是FIFO顺序排序的。

2) LinkedBlockingQueue:采用双链表实现,大小不规定,若在构造时指定大小,生成的BlockingQueue有大小限制,不指定大小,其大小由Integer.MAX_VALUE来决定。oxffffff

所含对象时FIFO顺序排序的

3)PriorityBlockingQueue:类似于LinkedBlockingQueue,但是所含对象的排序不是FIFO,而是依据对象的自然话排序或者构造函数的Comparator来决定的。

4)SynchronousQueue:特殊的BlockingQueue,有删除操作和插入操作,必须是先插入再删除。包含两个线程,插入线程和移除线程,这个容器相当于通道 不保留元素,在多任务队列中,处理速度最快。

 

posted @ 2020-09-01 22:44  jamers  阅读(870)  评论(0编辑  收藏  举报