理解Volatile与ThreadLocal

在多线程使用过程中,有一些变量可见性问题,一般使用Volatile与ThreadLocal实现。

Volatile

使用volatile声明的变量,可以确保值被更新的时候对其他线程立刻可见。volatile使用内存屏障来保证不会发生指令重排,解决了内存可见性的问题。

ThreadLocal

ThreadLocal可以理解为线程本地变量,他会在每个线程都创建一个副本,那么在线程之间访问内部副本变量就行了,做到了线程之间互相隔离,相比于synchronized的做法是用空间来换时间。