Java并发非阻塞队列之ConcurrentLinkedQueue源码解析
前言 在Java并发体系中,很多并发场景都离不开队列。比如Java中的定时任务框架、线程池框架、MQ等。本篇文章将记录我的队列学习之旅中的无阻塞队列源码学习。 线程安全性 首先,队列必须是线程安全的,否则,在并发场编程中,就失去了使用队列的...
前言 在Java并发体系中,很多并发场景都离不开队列。比如Java中的定时任务框架、线程池框架、MQ等。本篇文章将记录我的队列学习之旅中的无阻塞队列源码学习。 线程安全性 首先,队列必须是线程安全的,否则,在并发场编程中,就失去了使用队列的...
一. AQS是什么? ASQ是AbstractQueuedSynchronizer的简称,它的类全限定名为:java.util.concurrent.locks.AbstractQueuedSynchronizer. 后文中我们称之为同...
获取 IDEA 激活码、PyCharm 激活码、WebStorm 激活码和 DataGrip 激活码,提供详细破解教程与永久激活方法。支持 IDEA 永久激活与破解,免费获取注册码与激活码,解决 2024/2025 版本激活问题,轻松实现所有 JetBrains 工具的激活。
前言 在Java并发的话题中,volatile关键字一定是绕不开的话题。Java程序员都知道,volatile关键字的使用方式,以及它的特性:保证变量在内存中的可见性,但不保证原子性。Java的J.U.C包中volatile关键字可谓是基石...
锁优化的背景 JDK5版本带来了J.U.C包以及其他并发相关的技术,使得Java语言对于并发的支持更加完善。在这个基础上,JDK6为了更加高效的并发,Hotspot虚拟机的开发团队花费了大量的精力去实现各种锁优化的技术:自旋锁、自适应自...
线程安全的定义 当多个线程同时访问同一个对象时,调用这个对象的方法都可以得到正确的结果,那么我们称这个对象是线程安全的。 注意,我们所说的线程安全,是指在多线程下,共享数据是否是安全的,而不是线程本身是否安全。 在Java中我们可以...
前言 对于大多数Java开发人员而言,在实际工作中很少遇到复杂的并发场景。最多可能也就用一下线程池来并发运行程序以提升执行效率。 虽然现状如此,但这并非意味着我们简单掌握并发的应用就可以了。在当今摩尔定律失效的情况下,并发处理成为了计算机发...
1、岛屿的数量 200. 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包...
1、删除排序链表中的重复元素,保留一个重复元素 83. 删除排序链表中的重复元素 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1...
ArrayList ArrayList就是动态数组,其实就是Array的复杂版本,它提供了动态的添加元素和删除元素的方法,同时实现了Collection 和 List接口,能够灵活的设置数组的大小。 通过源码的分析,我们可以看到ArrayL...
1、概念 死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去,如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 产生死锁的...