首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
一角钱技术
掘友等级
Java架构师
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
174
文章 167
沸点 7
赞
174
返回
|
搜索文章
最新
热门
阻塞队列 — DelayedWorkQueue源码分析
线程池运行时,会不断从任务队列中获取任务,然后执行任务。如果我们想实现延时或者定时执行任务,重要一点就是任务队列会根据任务延时时间的不同进行排序,延时时间越短地就排在队列的前面,先被获取执行。 队列是先进先出的数据结构,就是先进入队列的数据,先被获取。但是有一种特殊的队列叫做优…
阻塞队列 — LinkedBlockingDeque源码分析
LinkedBlockingDeque 一个由于链表结构组成的双向阻塞队列,队列头部和尾部都可以添加和移除元素,多线程并发时,可以将锁的竞争对多降到一半。 一般多用于生产者消费者模式。 我们来看一个例子:使用了LinkedBlockingQueue来模仿生产者线程和消费者线程进…
阻塞队列 — LinkedTransferQueue源码分析
LinkedTransferQueue 是一个由链表结构组成的无界阻塞传输队列,它是一个很多队列的结合体(ConcurrentLinkedQueue,LinkedBlockingQueue,SynchronousQueue),在除了有基本阻塞队列的功能(但是这个阻塞队列没有使用…
阻塞队列 — SynchronousQueue源码分析
SynchronousQueue 一个不存储元素的阻塞队列,每一个 put 操作必须等待 take 操作,否则不能继续添加元素。支持公平锁和非公平锁2种策略来访问队列。默认是采用非公平性策略访问队列。公平性策略底层使用了类似队列的数据结构,而非公平策略底层使用了类似栈的数据结构…
阻塞队列 — DelayQueue源码分析
DelayQueue 由优先级支持的、基于时间的调度队列,内部使用非线程安全的优先队列(PriorityQueue)实现,而无界队列基于数组的扩容实现。在创建元素时,可以指定多久才能从队列中获取当前元素。只有延时期满后才能从队列中获取元素。 要求:入队的对象必须要实现 Dela…
堆和二叉堆的实现和特性
Heap:可以迅速找到一堆数中的最大或者最小值的数据结构。 将根节点最大的堆叫做大顶堆或大根堆,根节点最小的堆叫做小顶堆或小根堆。 常见的堆有二叉堆、裴波那契堆等。 85 按照上面讲的先插入到堆的尾部,也就是一维数组的尾部,一维数组的尾部的话就上图的位置,因为这是一个完全二叉树…
阻塞队列 — PriorityBlockingQueue源码分析
有任务要执行,可以对任务加一个优先级的权重,这样队列会识别出来,对该任务优先进行出队。 我们来看一个具体例子,例子中定义了一个将要放入“优先阻塞队列”的任务类,并且定义了一个任务工场类和一个任务执行类,在任务工场类中产生了各种不同优先级的任务,将其添加到队列中,在任务执行类中,…
阻塞队列 — LinkedBlockingQueue源码分析
LinkedBlockingQueue 由链接节点支持的可选有界队列,是一个基于链表的无界队列(理论上有界),队列按照先进先出的顺序进行排序。LinkedBlockingQueue不同于ArrayBlockingQueue,它如果不指定容量,默认为 Integer.MAX_VA…
阻塞队列 — ArrayBlockingQueue源码分析
ArrayBlockingQueue 由数组支持的有界阻塞队列,队列基于数组实现,容量大小在创建 ArrayBlockingQueue 对象时已经定义好。 此队列按照先进先出(FIFO)的原则对元素进行排序。支持公平锁和非公平锁,默认采用非公平锁。其数据结构如下图: 在线程池中…
并发编程之抽象队列同步器AQS应用ReentrantLock
Java并发编程核心在于 java.concurrent.util 包,而 juc 当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于 AbstractQueuedSynchronizer(简称为AQS),AQ…
下一页
个人成就
优秀创作者
文章被点赞
1,486
文章被阅读
263,122
掘力值
7,837
关注了
16
关注者
530
收藏集
0
关注标签
13
加入于
2018-12-12