文章目录
  1. 1. What is ThreadLocal
    1. 1.1. 一、ThreadLocal是一个线程内部的数据存储类,只能在指定的线程存取数据。
    2. 1.2. 二、只有三个方法
    3. 1.3. 三、内部实现大概如下:
  2. 2. 与synchronized
    1. 2.1. 1、都是为了解决多线程中对数据访问的安全性问题。
    2. 2.2. 2、synchronized采用了“以时间换空间”的方式,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采用了“以空间换时间”的方式。

文章目录
  1. 1. What is ThreadLocal
    1. 1.1. 一、ThreadLocal是一个线程内部的数据存储类,只能在指定的线程存取数据。
    2. 1.2. 二、只有三个方法
    3. 1.3. 三、内部实现大概如下:
  2. 2. 与synchronized
    1. 2.1. 1、都是为了解决多线程中对数据访问的安全性问题。
    2. 2.2. 2、synchronized采用了“以时间换空间”的方式,ThreadLocal采用了“以空间换时间”的方式。