浅谈 Java 中的锁升级

Java 在并发场景下,为了兼顾性能与安全,引入了锁升级机制。同一把锁会根据竞争情况,从低开销状态逐步升级到高开销状态,以减少无意义的阻塞与线程切换。 Java 对象的锁标志是存储在对象头中的 Mark Word (在 64 位虚拟机中长度是 64 位)中的: 倒数第3位:表示该对象是否可偏向; 倒


浅谈 ThreadLocal

ThreadLocal JDK 提供的 ThreadLocal 可以实现让每个线程都有自己的专属本地变量,虽然每个线程操作的是同一个 ThreadLocal 对象,但是 get() 和 set() 方法操作的变量都保存在每个线程内部,和其他线程互不影响。 举个例子,下面的代码创建了 10 个线程对一


浅谈 Java 内存模型:从 CAS 到 AQS

Java 内存模型 Java 的内存模型(Java Memory Model, JMM)规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存保存了被该线程使用的变量的主内存副本。线程对变量的读取、赋值等操作都必须在工作内存中执行,而不能直接读写主内存中的数据。 比如下面的例子