什么是 ThreadLocal 变量?

luohui 2020-06-21

ThreadLocal 是 Java 里一种特殊的变量。每个线程都有一个 ThreadLocal 就是每

个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。它是为创建代价

高昂的对象获取线程安全的好方法,比如你可以用 ThreadLocal 让

SimpleDateFormat 变成线程安全的,因为那个类创建代价高昂且每次调用都需

要创建不同的实例所以不值得在局部范围使用它,如果为每个线程提供一个自己

独有的变量拷贝,将大大提高效率。首先,通过复用减少了代价高昂的对象的创

建个数。其次,你在没有使用高代价的同步或者不变性的情况下获得了线程安全。

相关推荐