ThreadLocal
- ThreadLocal的作用就是为每一个使用该变量的线程提供一个变量值副本,使得每个线程都可独立的更改自己的副本,而不和其他线程的副本产生冲突
- 使用空间换时间的方式,为多线程环境常出现的并发访问提供了一种隔离机制
- ThreadLocal类中有一个Map,该Map的key是线程对象,value是线程对应的变量副本
- Synchronized是以时间换空间的方式,仅提供一份变量让多个线程排队访问,ThreadLocal是以空间换时间的方式,为每个线程提供一个变量,因此可以同时访问互不影响
- Synchronized用于线程间的数据共享,而ThreadLocal用于线程间的数据隔离