Java 集合使用问题集

ava 集合概览 Java 集合,也叫作容器,主要是由两大接口派生而来:一个是 Collection 接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于 Collection 接口,下面又有三个主要的子接口: List 、 Set 、 Queue 。 Java 集合框架如下图所示:…

hello hello 发布于 2024-11-18

Java 集合介绍

集合判空 《阿里巴巴 Java 开发手册》的描述如下: 判断所有集合内部的元素是否为空,使用 isEmpty() 方法,而不是 size()==0 的方式。 这是因为 isEmpty() 方法的可读性更好,并且时间复杂度为 O(1) 。 绝大部分我们使用的集合的 size() 方法的时间复杂度也是 O(1) ,不过,也有很多复杂度不是 O(1) 的,比如…

hello hello 发布于 2024-11-16

Java ConditionObject 介绍(一)

前言 在介绍 AQS 时,其中有一个内部类叫做 ConditionObject,当时并没有进行介绍,并且在后续阅读源码时,会发现很多地方用到了 Condition ,这时就会很诧异,这个 Condition 到底有什么作用?那今天就通过阅读 Condition 源码,从而弄清楚 Condition 到底是做什么的?当然阅读这篇文章的时候希望你已经阅读了…

hello hello 发布于 2024-11-16

Java ConditionObject 介绍(二)

fullyRelease 方法 (AQS) final int fullyRelease(Node node) { boolean failed = true; try { // 获取当前节点的 state int savedState = getState(); // 释放锁 if (release(savedState)) { failed =…

hello hello 发布于 2024-11-16

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
上一页 下一页