Java AQS 介绍(二)

/** * 根据上一个节点的状态,判断当前线程是否应该被阻塞 * SIGNAL -1 :当前节点释放或者取消时,必须 unpark 他的后续节点。 * CANCELLED 1 :由于超时(timeout)或中断(interrupt),该节点被取消。节点永远不会离开此状态。特别是,具有取消节点的线程永远不会再次阻塞。 * CONDITION -2…

hello hello 发布于 2024-11-13

Java AQS 介绍(一)

前言 AbstractQueuedSynchronizer 抽象队列同步器,简称 AQS 。是在 JUC 包下面一个非常重要的基础组件,JUC 包下面的并发锁 ReentrantLock CountDownLatch 等都是基于 AQS 实现的。所以想进一步研究锁的底层原理,非常有必要先了解 AQS 的原理。…

hello hello 发布于 2024-11-13

Java DelayQueue 介绍(一)

DelayQueue 是 JUC 包( java.util.concurrent) 为我们提供的延迟队列,用于实现延时任务比如订单下单 15 分钟未支付直接取消。它是 BlockingQueue 的一种,底层是一个基于 PriorityQueue 实现的一个无界队列,是线程安全的。 DelayQueue 中存放的元素必须实现 Delayed…

hello hello 发布于 2024-11-13

Java DelayQueue 介绍(二)

DelayQueue 源码解析 这里以 JDK1.8 为例,分析一下 DelayQueue 的底层核心源码。 DelayQueue 的类定义如下: public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E> { //... }…

hello hello 发布于 2024-11-13

Java CopyOnWriteArrayList 介绍

CopyOnWriteArrayList 简介 在 JDK1.5 之前,如果想要使用并发安全的 List 只能选择 Vector 。而 Vector 是一种老旧的集合,已经被淘汰。 Vector 对于增删改查等方法基本都加了 synchronized ,这种方式虽然能够保证同步,但这相当于对整个 Vector…

hello hello 发布于 2024-11-13

Java ConcurrentHashMap 介绍

ConcurrentHashMap 作为线程安全的 HashMap ,它的使用频率也是很高。那么它的存储结构和实现原理是怎么样的呢? 1. ConcurrentHashMap 1.7 1. 存储结构 Java 7 中 ConcurrentHashMap 的存储结构如上图, ConcurrnetHashMap 由很多个 Segment 组合,而每一个…

hello hello 发布于 2024-11-11

Java ArrayBlockingQueue 介绍(二)

ArrayBlockingQueue初始化 了解 ArrayBlockingQueue 的细节前,我们不妨先看看其构造函数,了解一下其初始化过程。从源码中我们可以看出 ArrayBlockingQueue 有 3 个构造方法,而最核心的构造方法就是下面这一个。 // capacity 表示队列初始容量,fair 表示 锁的公平性 public…

hello hello 发布于 2024-11-09

Java ArrayList 介绍

ArrayList 简介 ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。 ArrayList 继承于 AbstractList ,实现了 List ,…

hello hello 发布于 2024-11-09

Java ArrayBlockingQueue 介绍(一)

阻塞队列简介 阻塞队列的历史 Java 阻塞队列的历史可以追溯到 JDK1.5 版本,当时 Java 平台增加了 java.util.concurrent ,即我们常说的 JUC 包,其中包含了各种并发流程控制工具、并发容器、原子类等。这其中自然也包含了我们这篇文章所讨论的阻塞队列。 为了解决高并发场景下多线程之间数据共享的问题,JDK1.5 版本中出现了…

hello hello 发布于 2024-11-09

Java HashMap 介绍

HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。 HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap…

hello hello 发布于 2024-11-09
上一页 下一页