前言:
眼前小伙伴们对“java的local”可能比较关注,我们都需要了解一些“java的local”的相关知识。那么小编也在网上网罗了一些对于“java的local””的相关文章,希望同学们能喜欢,各位老铁们快快来学习一下吧!ThreadLocal是什么
ThreadLocal,顾名思义,它不是一个线程,而是线程的一个本地化对象。在多线程中的对象使用ThreadLocal时,ThreadLocal为每个使用该变量的线程分配一个独立的变量副本。所以每一个线程都可以独立地改变自己的副本,而不会影响其他线程所对应的副本。从线程的角度看,这个变量就像是线程的本地变量,这就是“Local”所要表达的意思了。ThreadLocal被提出的目的就是为解决多线程的并发问题提供了一种新的思路。
ThreadLocal的接口方法
ThreadLocal的接口很简单,只有4个方法,分别如下:
void set(Object value)
设置当前线程的线程局部变量的值。
public Object get()
返回当前线程所对应的线程局部变量。
public void remove()
删除当前线程局部变量的值。
protected Object initialValue()
返回该线程局部变量的初始值。顺带提一句,这个方法是延时执行的,在线程调用get()或set()时才执行,并且仅执行1次。
ThreadLocal工作原理
ThreadLocal是如何做到为每一个线程维护一份独立的变量副本呢?原理是这样的:ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中每个元素的key为线程对象,而其value为线程的变量副本。
我们自己来实现一个简易版,帮助大家理解:
细心的就会发现,ThreadLocal并没有大家想象的很深奥,其实明白了原理就很简单。
喜欢记得关注我,干货依旧持续更新中。
标签: #java的local