zoukankan      html  css  js  c++  java
  • Queue(队列)接口

    Queue(队列)接口

    表示Collection的子接口,表示队列FIFO(First In First Out)先进先出

    常用方法:

    ​ 抛出异常:

    ​ boolean add(E e) - 顺序添加一个元素(到达上限后,再添加则会抛出异常 )

    ​ E remove() - 获得第一个元素并移除(如果队列没有元素时,则抛出异常)

    ​ E element() - 获得第一个元素但不移除(如果队列没有元素时,则抛出异常)

    ​ 返回特殊值:推荐使用

    ​ boolean offer(E e) - 顺序添加一个元素(到达上限后,再添加则会返回false)

    ​ E pool() - 获得第一个元素并移除(如果队列没有元素时,则返回null)

    ​ E peek() - 获得第一个元素但不移除(如果队列没有元素时,则返回null)

    ConcurrentLinkedQueue

    线程安全、可高效读写的队列,高并发下性能最好的队列。

    无锁、CAS比较交换算法,修改的方法包含三个核心参数(V,E,N)

    ​ V:要更新的变量、 E:预期值、 N:新值

    Queue<String> queue = new ConcurrentLinkedQueue<String>();
    queue.offer("Hello");	//插入
    queue.offer("World");	//插入
    queue.poll();	//删除Hello
    queue.peek();	//获得World
    

    BlockingQueue接口(阻塞队列)

    Queue的子接口,阻塞队列,增加了两个线程状态为无限期等待的方法。

    方法:

    void put(E e) - 将指定元素插入此队列中,如果没有可用空间,则等待

    E take() - 获取并移除此队列头部元素,如果没有可用元素,则等待。

    ArrayBlockingQueue:

    数组结构实现,有界队列

    没写完,抽空给补上

  • 相关阅读:
    Fix Installing .NET Framework 3.5 failed Error Code 0x800F0954 on Windows 10
    RHEL8安装五笔输入法
    Enable EPEL and Local Repository on RHEL8
    Why is Yum Replaced by DNF?
    检查Linux服务器是否被攻击的常用命令及方法
    IDEA 主题
    IDEA 如何显示一个类中所有的方法
    Appium 安装以及安装过程中遇到的问题
    Maven 如何发布 jar 包到 Nexus 私库
    java泛型的基本使用
  • 原文地址:https://www.cnblogs.com/MonkeySun/p/13347193.html
Copyright © 2011-2022 走看看