ThreadLocal
What is ThreadLocal
一、ThreadLocal是一个线程内部的数据存储类,只能在指定的线程存取数据。
二、只有三个方法
1 | public class ThreadLocal<T>{ public void set(T value){ ... } public T get(){ ... } protected T initialValue(){ ... } } |
三、内部实现大概如下:
1 | private Map<Thread,Integer> threadData = new HashMap<Thread,Integer>();//内部维护一个装线程和数据的Map threadData.put(Thread.currentThread(),data);//将线程及对应的数据装入 |
与synchronized
1、都是为了解决多线程中对数据访问的安全性问题。
2、synchronized采用了“以时间换空间”的方式,ThreadLocal采用了“以空间换时间”的方式。