• 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:

    数组结构实现,有界队列

    没写完,抽空给补上

  • 相关阅读:
    取消 Vue 中格式编译警告
    Vue 中提示报错 handlers[i].call is not a function解决方法
    PhpStorm 配置链接远程虚拟机
    Java 类提供了自定义的构造方法,那么类的默认构造不会被调用
    2019.9.30极限测试 04.JAVA语言课堂测试试卷-极限测试
    程序员修炼之道+从小工到专家 9月份读后感
    2019.9.23 作业2
    2019.9.23 作业1
    原码,补码,反码区分
    9.16日上课总结
  • 原文地址:https://www.cnblogs.com/MonkeySun/p/13347193.html
Copyright © 2020-2023  润新知