摘要:
介绍 队列同步器 AbstractQueuedSynchronizer,简称为 AQS,是用来构建锁及其他同步组件(比如 ReentrantLock、CountDownLatch)的基础框架。它使用了一个 int 成员变量表示同步状态,通过内置的 FIFO 队列来完成获取资源线程的排队工作。AQS 阅读全文
摘要:
volatile 的特性 关键字 volatile 可以说是 Java 虚拟机提供的最轻量级的同步机制。 当一个变量被定义为 volatile 之后,它将具备两种特性,可见性和禁止指令重排。 可见性 这里的“可见性”是指当一个线程修改了 volatile 变量,其他线程是可以立即得知的。而普通变量不 阅读全文
摘要:
final 域的重排序规则 对于 final 域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final 域的写入,与随后把这个构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重 阅读全文
摘要:
1. 并发模型的两个关键问题 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 Java 的并发采用的是共享内存模型,Java 线程之间的通 阅读全文