想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal实现原理和相关源码。首先,本文先介绍一下ThreadLocal以及底层结构,然后从ThreadLocal相关的API入手,详细分析ThreadLocal源码和使用时需要注意的地方,最后分析下ThreadLocal中的内存泄露问题。
通过实例一行一行分析JVM的invokespecial和invokevirtual指令
深入理解Java内存模型(五)——锁
深入理解Java内存模型(四)——volatile
0.1. volatile的特性
当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。
深入理解Java内存模型(三)——顺序一致性
0.1. 数据竞争与顺序一致性保证
当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:
- 在一个线程中写一个变量,
- 在另一个线程读同一个变量,
- 而且写和读没有通过同步来排序。
深入理解Java内存模型(二)——重排序
深入理解Java内存模型(一)——基础篇
MyBatis-Bug源码解析
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在Java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。