在Java中,有许多技术可以确保线程安全。你可以使用synchronized和Lock等关键字来锁定代码块。
但它们有一个共同的特点,那就是锁定会对代码的性能产生一定的损失。
其实,JDK中还提供了另一种思路,即:以空间换时间。
没错,使用ThreadLocal类就是这种思想的具体体现。
ThreadLocal为每个使用该变量的线程提供了一个独立的副本,这样每个线程就可以独立地改变自己的副本而不影响其他线程的相应副本。
ThreadLocal的用法大致是这样的:
- 首先创建一个CurrentUser类,里面包含了ThreadLocal的逻辑。
<b>public</b> <b>class</b> CurrentUser { <b>private</b> <b>static</b> <b>final</b> ThreadLocal<UserInfo> THREA_LOCAL = <b>new</b> ThreadLocal(); <b>public</b> <b>static</b> <b>void</b> set(UserInfo userInfo) { THREA_LOCAL.set(userInfo); } <b>public</b> <b>static</b> UserInfo get() { THREA_LOCAL.get(); } <b>public</b> <b>static</b> <b>void</b> remove() {