ThreadLocal,讲一下原理
时间: 2023-06-10 09:03:19 浏览: 76
ThreadLocal讲解
ThreadLocal是Java中的一个线程局部变量。它为每个线程提供了一个单独的变量副本,因此每个线程都可以独立地更改自己所拥有的变量副本,而不会干扰其他线程拥有的副本。
ThreadLocal原理是:每个Thread对象中都有一个ThreadLocalMap类型的成员变量threadLocals,这个Map以ThreadLocal为key,以线程变量的值为value。每个ThreadLocal实例在使用时会通过get()方法获取到当前线程的ThreadLocalMap,并以自己为key在Map中定位到对应的value。ThreadLocalMap也是一个自定义的数据结构,它的实现方式是一个Entry数组,每个Entry都包含了一个ThreadLocal实例和对应的线程变量值。
这个机制保证了每个线程都拥有自己独立的变量副本,互不干扰。同时,由于ThreadLocalMap存储在Thread对象中,当线程结束时,Thread对象和其中的ThreadLocalMap也都会被回收,从而避免了内存泄漏问题。
阅读全文