Queue的几种容器

关于几种不同容器队列的使用场景


  1. ConcurrentLinkedQueue是一个适用于高并发场景下的队列,通过无锁的方式实现高并发状态下的高性能,该容器的性能好于BlocjingQueue,是一个基于链接节点的无界线程安全队列,先进先出,头最先加入,尾最近加入,队列不允许null元素。
    **重点内容**ConcurrentLinkedQueue重要方法
    add(),offer()都是加入元素的方法,没有区别。
    poll()和peek()都是取头元素节点,区别在于前者会删除元素后者不会。

重点内容另外三种适应于不同场景的阻塞式队列

  1. ArrayBlockingQueue是一个定长数组,读写没有分离,长度需要定义,可以指定先进先出或者先进后出,也叫有界队列。适用于超高并发场景,适用于极多场景。

  2. LinkedBlockingQueue是一个无界数组,读写分离,从而实现生产者和消费者的操作完全并行运行。适用于高并发操作但是最高并发数不会超出服务器的限制的场景。

  3. SynchronousQueue是一种没有缓冲的虚拟队列,生产者产生的数据会直接被消费者获取并且消费,适用于低并发量的需求场景。

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