从 AbstractQueuedSynchronizer 理解 ReentrantLock

2018-08-01
阅读 12 分钟
2.8k
Java 并发编程离不开锁, Synchronized 是常用的一种实现加锁的方式,使用比较简单快捷。在 Java 中还有另一种锁,即 Lock 锁。 Lock 是一个接口,提供了超时阻塞、可响应中断以及公平非公平锁等特性,相比于 Synchronized,Lock 功能更强大,可以实现更灵活的加锁方式。

volatile 的用法及原理

2018-05-17
阅读 3 分钟
6k
在 Java 并发编程中,volatile 是经常用到的一个关键字,它可以用于保证不同的线程共享一个变量时每次都能获取最新的值。volatile 具有锁的部分功能并且性能比锁更好,所以也被称为轻量级锁。下面具体分析 volatile 的用法及原理,涉及到内存模型、可见性、重排序以及伪共享等方面。