呼延十

还记得年少时的梦吗

新电脑装机

shell zsh + oh my zsh + iterm2. zsh: autosuggestion. 历史命令自动补全 iTerm2 + Oh My Zsh 打造舒适终端体验 z jls IDEA 完。 联系我 最后,欢迎关注我的个人公众号【 呼延十 】,会不定期更新很多后端工程师的学习笔记。 也欢迎直接公众号私信或者邮箱联系我,一定知无不言,言无...

(juc系列)阻塞队列(blockingqueue)及其实现

本文源码基于: JDK13 整体的类图: BlockingQueue 接口 官方注释翻译 什么是阻塞队列? 一个队列,它支持: 获取元素时,如果队列为空,可以等待元素入队,直到队列不为空 存储元素时,如果队列满了,可以等待元素出队,知道队列腾出空间 这就是一个阻塞队列了~. 阻塞队列的方法,有四种形式来处理,操作没有办法被立刻满足,但是未来某些时间点可能满足的...

(juc系列)延迟队列delayqueue

本文源码基于: JDK13 DelayQueue 延迟队列 官方注释翻译 用于延迟元素的一个无界的阻塞队列实现. 延迟元素只有在他的延迟过期之后,才可以被获取. 队头的元素,是队列中过期最早的元素。如果没有元素过期,那么将没有队头元素,poll方法将会返回一个null. 过期操作只有元素的getDelay方法返回一个小于等于0的数值时才会起作用. 尽管没有过期的元素,不能通过ta...

(juc系列)并发集合之concurrentlinkedqueue源码

本文源码基于: JDK13 ConcurrentLinkedQueue 官方注释翻译 一个用链表实现的无界的线程安全的队列. 这个队列提供FIFO的元素顺序. 当多个线程需要共享一个集合的访问时, ConcurrentLinkedQueue是一个合适的选择. 向其他的并发集合实现一样,这个类不接受null元素. 这个实现使用了高效的无锁算法. 来源于paper Simple, Fa...

(juc系列)并发集合之concurrentlinkeddeque源码

本文源码基于: JDK13 ConcurrentLinkedDeque 官方注释翻译 一个无界的,并发的双端队列,使用链表实现. 多线程间的并发写入,移除,访问操作,可以保证安全.当有很多线程共享一个公共集合时,ConcurrentLinkedDeque 是一个不错的选择. 像其他的并发集合一样,这个类不接受null元素. 迭代器是弱一致的. 需要注意的是,和其他大多数集合不同,s...

(juc系列)同步队列synchronousqueue

本文源码基于: JDK13 SynchronousQueue 官方注释翻译 一个阻塞队列的实现,他的插入操作必须等待对应的移除操作. 反之亦然. 一个同步队列没有内部的容量限制. 不能执行peek()操作,因此只有当你尝试去移除的时候,元素才存在. 在没有其他线程等待移除的时候,你不能使用任何方法来插入一个元素. 不能执行迭代操作,因为没有任何元素可以迭代. 队头...

(juc系列)同步列表copyonwritearraylist及set源码解析

本文源码基于: JDK13 CopyOnWriteArrayList 官方注释翻译 ArrayList的一个线程安全的变体,所有可变的操作(比如add/set等)都使用底层数组的一个拷贝. 这经常是非常昂贵的,但是在便利操作远远大于更该操作的情况下更加高效. 如果你不想或者不能进行同步遍历, 那么这个类就有用了. 快照风格的遍历器,使用一个当遍历器创建时,对数组状态的一个引用. ...

(juc系列)优先级阻塞队列 Priotiryblockingqueue

本文源码基于: JDK13 PriorityBlockingQueue 优先级阻塞队列 官方注释翻译 一个无界的阻塞队列,使用相同的排队规则PriorityQueue并且提供阻塞的操作. 因为这个队列逻辑上是误解的,尝试添加操作可能会失败,由于资环耗尽了(比如OOM). 这个类不接受null元素. 一个优先级队列依赖于自然序并且不保证non-comparable(不支持比较的元素)的...