摘要: 锁的底层支持 AbstractQueuedSynchronizer 抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS 实现的。 AQS 类图结构如图: 由该图可以看到, AQS 是一个FIFO 的双向队列,其内部通过节点head 和tail 记录队首和队尾元素,队列元 阅读全文
posted @ 2020-11-14 23:43 天上的白云贼白了 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 介绍 LockSupport 工具类的主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport 类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport 类的方法的线程是不持有许可证的。LockSupport 是使用Unsafe 类实现的。 主要函数 阅读全文
posted @ 2020-11-08 18:28 天上的白云贼白了 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 介绍 并发包中的并发List 只有CopyOnWriteArrayList 。CopyOnWriteArrayList 是一个线程安全的ArrayList ,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。 CopyOnWriteArrayList 类图结构如 阅读全文
posted @ 2020-11-08 16:36 天上的白云贼白了 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 概述 JUC 包提供了Atomiclnteger 、AtomicLong 和AtomicBoolean等原子性操作类,这些类都是使用非阻塞算法CAS 实现的,相比使用锁实现原子性操作这在性能上有很大提高。原子性操作类的原理大致相同,本文只对AtomicLong 类的实现原理以及JDK 8 中新增的L 阅读全文
posted @ 2020-11-07 23:54 天上的白云贼白了 阅读(142) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal ThreadLocal 即线程本地变量,也就是如果创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地副本。当多个线程操作这个变量时,实际操作的是自己本地内存里面的变量,从而避免了线程安全问题。 ThreadLocal 实现原理 Threa 阅读全文
posted @ 2020-11-06 21:06 天上的白云贼白了 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 什么是线程 线程是进程中的一个实体,线程本身是不会独立存在。进程是代码在数据集合上的一次运行活动, 是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径, 一个进程中至少有一个线程,进程中的多个线程共享进程的资源。 操作系统在分配资源时是把资源分配给进程的, 但是CPU 资源比较特殊, 它 阅读全文
posted @ 2020-11-04 21:37 天上的白云贼白了 阅读(114) 评论(0) 推荐(0) 编辑
摘要: Random 类及其局限性 java.util.Random 是使用较为广泛的随机数生成工具类,使用方法如下: public class RandomTest { public static void main(String[] args) { // 创建一个默认种子的随机数生成器 Random r 阅读全文
posted @ 2020-11-01 20:49 天上的白云贼白了 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 使用场景 利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现为以下3种形式: 对于普通同步方法,锁是当前实例对象。 对于静态同步方法,锁是当前类的Class对象。 对于同步方法块,锁是synchonized括号里配置的对象。 当一个线程试图访问同步代码块时,它首 阅读全文
posted @ 2020-10-25 22:56 天上的白云贼白了 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 语义 volatile关键字是Java虚拟机提供的最轻量级的同步机制,volatile修饰的变量具备两个特性: 保证此变量对所有线程的可见性。 禁止指令重排序优化。 实现原理 可见性 加锁如何解决可见性问题? 因为某一个线程进入synchronized代码块前后,线程会获得锁,清空工作内存,从主内存 阅读全文
posted @ 2020-10-18 17:17 天上的白云贼白了 阅读(135) 评论(0) 推荐(0) 编辑
摘要: CPU多级缓存 为了解决计算机系统中主内存与CPU之间运行速度差问题,在CPU与主内存之间添加一级或者多级高速缓冲存储器(Cache)。这个Cache一般被集成到CPU内部,所以也叫CPU Cache。 图示为两级Cache结构: 局部性原理 局部性原理是指CPU访问存储器时,无论是存取指令还是存取 阅读全文
posted @ 2020-09-28 00:44 天上的白云贼白了 阅读(105) 评论(0) 推荐(0) 编辑