其他几种BlockingQueue

其他两种阻塞式容器BlockingQueue


  1. PriorityBlockingQueue是一种基于优先级的阻塞队列,(优先级的判断通过构造函数传入Compator对象来决定,也就是说传入队列的对象必须实现Comparable接口)在实现PriorityBlockingQueue时,内部控制线程同步的锁采用的是公平锁。然后这个容器在添加对象的时候add()是不会里面的对象进行优先级排序的,只有在取对象take()的时候才会将容器的内部的对象进行优先级排序。
  2. 然后上篇文章说的SynchronousQueue()容器并不是不能够add()对象,而是必须有消费者的请求发送过来也就是要有take()请求的时候才能进行add(),这时就可以获取到add()的对象,这个容器内部没有缓冲队列,只有消费者有请求时生产者才可以add()对象,这时相当于消费者和生产者之间进行了点对点的传输。
  3. DelayQueue是一种带有延迟时间的Queue,其中的元素只有当其指定的延迟时间到了,才能够从队列中获取到该元素。DelayQueue中的元素必须实现Delayed接口,(getDelay(TimeUnit unit)(这个是用来判断是否到了截止时间)和compareTo()(这个是用来相互排序比较用的)方法)DelayQueue是一个没有大小限制的队列,应用场景很多,比如对缓存超时的数据进行移除,任务超时处理、空闲连接的关闭等等。

你可能感兴趣的:(多线程,java)