上一页 1 2 3 4 5 6 7 8 ··· 12 下一页
摘要: 一、Atomic数组简介 Atomic数组,顾名思义,就是能以原子的方式,操作数组中的元素。 JDK提供了三种类型的原子数组:AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray。 这三种类型大同小异: AtomicIntegerArray对 阅读全文
posted @ 2020-03-23 14:56 windy杨树 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 目录 一、Unsafe简介 在正式的开讲 juc-atomic框架系列之前,有必要先来了解下Java中的Unsafe类。 Unsafe类,来源于sun.misc包。该类封装了许多类似指针操作,可以直接进行内存管理、操纵对象、阻塞/唤醒线程等操作。Java本身不直接支持指针的操作,所以这也是该类命名为 阅读全文
posted @ 2020-03-23 13:14 windy杨树 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 Condition是一个接口,AbstractQueuedSynchronizer 中的ConditionObject内部类实现了这个接口。Condition声明了一组等待/通知的方法,这些方法的功能与Object中的wait/notify/notifyAll等方法相似。这两者相同的地方 阅读全文
posted @ 2020-03-22 18:25 windy杨树 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 1.简介 可重入锁ReentrantLock自 JDK 1.5 被引入,功能上与synchronized关键字类似。所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生。ReentrantLock 的主要功能和 synchronized 关键字一致,均是用于多线程的同 阅读全文
posted @ 2020-03-22 18:24 windy杨树 阅读(3235) 评论(0) 推荐(0) 编辑
摘要: 1.简介 在分析完AbstractQueuedSynchronizer(以下简称 AQS)和ReentrantLock的原理后,本文将分析 java.util.concurrent 包下的两个线程同步组件CountDownLatch和CyclicBarrier。这两个同步组件比较常用,也经常被放在一 阅读全文
posted @ 2020-03-22 18:23 windy杨树 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 1.简介 AbstractQueuedSynchronizer (抽象队列同步器,以下简称 AQS)出现在 JDK 1.5 中,由大师 Doug Lea 所创作。AQS 是很多同步器的基础框架,比如 ReentrantLock、CountDownLatch 和 Semaphore 等都是基于 AQS 阅读全文
posted @ 2020-03-22 18:22 windy杨树 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 1.简介 线程池可以简单看做是一组线程的集合,通过使用线程池,我们可以方便的复用线程,避免了频繁创建和销毁线程所带来的开销。在应用上,线程池可应用在后端相关服务中。比如 Web 服务器,数据库服务器等。以 Web 服务器为例,假如 Web 服务器会收到大量短时的 HTTP 请求,如果此时我们简单的为 阅读全文
posted @ 2020-03-18 21:18 windy杨树 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 目录 1 简介 2 背景介绍 1.简介 CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数 – 内存位置、预期数值和新值。CAS 的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不 阅读全文
posted @ 2020-03-18 21:14 windy杨树 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 目录 1 概述 1 概述 Hashtable是一个比较古老的Map实现类,从它的名称就可以看得出来,因为没有遵循Java的语言规范。它和HashMap很像,同属于散列表,有以下特性: 首先就是线程安全,这也估计算是唯一一个优于HashMap的特性了吧; Hashtable不允许key或者value为 阅读全文
posted @ 2020-03-18 18:41 windy杨树 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 目录 一 简介 二 概览 三 源码分析 3.1 查找 3.2 遍历 3.3 插入 3.4 删除 一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、p 阅读全文
posted @ 2020-03-18 18:00 windy杨树 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 目录 1 概述 2 原理 3 源码分析 3.0 Entry 的继承体系 3.1 链表的建立过程 3.2 链表节点的删除过程 3.3 访问顺序的维护过程 3.4 基于 LinkedHashMap 实现缓存 4 总结 1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基 阅读全文
posted @ 2020-03-18 17:59 windy杨树 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 目录 1 概述 2 原理 3 源码分析 3.1 构造方法 3.1.1 构造方法分析 3.1.2 初始容量、负载因子、阈值 3.2 查找 3.3 遍历 3.4 插入 3.4.1 插入逻辑分析 3.4.2 扩容机制 3.4.3 链表树化、红黑树链化与拆分 3.5 删除 3.6 其他细节 3.7 总结 1 阅读全文
posted @ 2020-03-18 17:56 windy杨树 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 目录 1 概述 2 继承体系 1 概述 总的来说,Java 容器可以划分为 4 个部分: List 集合 Set 集合 Queue 集合 Map 集合 除了上面 4 种集合之外,还有一个专门的工具类: 工具类(Iterator 迭代器、Enumeration 枚举类、Arrays 和 Collect 阅读全文
posted @ 2020-03-18 17:45 windy杨树 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 目录 1 概述 2 源码分析 1 概述 从名字我们可以看出,其实一个双向队列实现,而且底层采用数组实现。 public class ArrayDeque<E> extends AbstractCollection<E> implements Deque<E>, Cloneable, Serializ 阅读全文
posted @ 2020-03-18 16:49 windy杨树 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 目录 1 概述 2 源码分析 1 概述 PriorityQueue 是一个优先级队列,其底层原理采用二叉堆实现。我们先来看看它的类声明: public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Seriali 阅读全文
posted @ 2020-03-18 16:41 windy杨树 阅读(158) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 12 下一页