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:

    数组结构实现,有界队列

    没写完,抽空给补上

  • 相关阅读:
    112th LeetCode Weekly Contest Validate Stack Sequences
    112th LeetCode Weekly Contest Minimum Increment to Make Array Unique
    C# 有关系统音量的操作
    C# 关于时区的操作
    WordPress 设置GeoIP数据库目录权限时错误解决方案
    AtCoder Beginner Contest 113 C
    AtCoder Beginner Contest 113 B
    AtCoder Beginner Contest 113 A
    将Tomcat注册为Windows服务
    常用的调试方法
  • 原文地址:https://www.cnblogs.com/MonkeySun/p/13347193.html
Copyright © 2011-2022 走看看