java基础知识 mzl

数据结构

队列

先进先出(FIFO)的抽象数据结构,队尾(rear),队头(font)

  1. add 增加一个元索          如果队列已满,则抛出一个IIIegaISlabEepeplian异常
  2. element 返回队列头部的元素          如果队列为空,则抛出一个NoSuchElementException异常
  3. offer 添加一个元素并返回true          如果队列已满,则返回false
  4. poll 移除并返问队列头部的元素          如果队列为空,则返回null
  5. peek 返回队列头部的元素          如果队列为空,则返回null
  6. put 添加一个元素          如果队列满,则阻塞
  7. take 移除并返回队列头部的元素          如果队列为空,则阻塞
put或者take 导致线程阻塞

数组 链表 循环 head tail = (tail + 1) % size;
非阻塞队列

LinkedList:双向链
ConcurrentLinkedQueue:基于链接节点的线程安全队列
PriorityQueue:维护了一个有序列表

阻塞队列 实现BlockingQueue接口

ArrayBlockingQueue:数组实现的有界阻塞队列,试图将一个元素放入一个已满的队列将导致操作阻塞;试图从空队列中取出一个元素也会阻塞。
LinkedBlockingQueue:基于链表实现的可选边界的阻塞队列
DelayQueue:延时队列,网上说可以做订单的一些提醒操作之类的
PriorityBlockingQueue:无界阻塞队列
SynchronousQueue:突然看到一个AQS然而并不懂,说SynchronousQueue是直接使用CAS实现线程的安全访问。
  • AQS就是基于CLH队列,用volatile修饰共享变量state,线程通过CAS去改变状态符,成功则获取锁成功,失败则进入等待队列,等待被唤醒。

https://blog.csdn.net/mulinsen77/article/details/84583716

  • CAS 比较和替换是设计并发算法时用到的一种技术

https://blog.csdn.net/ls5718/article/details/52563959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值