线程封闭ThreadLocal
# 线程封闭
![image.png](https://cos.easydoc.net/31477061/files/km1p644a.png)
![image.png](https://cos.easydoc.net/31477061/files/km1p7gt0.png)
## 代码
```
package smm.test.app.multiplesystems.lifter1;
import java.util.concurrent.locks.LockSupport;
public class test {
public static void main(String[] args) {
try {
threadLocalTest();
} catch (Exception e) {
e.printStackTrace();
}
}
/** threadLocal变量,每个线程都有一个副本,互不干扰 */
public static ThreadLocal<String> value = new ThreadLocal<>();
/**
* threadlocal测试
*
* @throws Exception
*/
public static void threadLocalTest() throws Exception {
// threadlocal线程封闭示例
value.set("123"); // 主线程设置值
System.out.println(value.get()); // 取主值 1
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(value.get()); //取子值 2
value.set("456"); // 子线程设置值
System.out.println(value.get()); // 取子值 3
}
}).start();
Thread.sleep(5000L); // 等待所有线程执行结束
System.out.println(value.get()); // 取主值 4
}
}
```
![image.png](https://cos.easydoc.net/31477061/files/km1pm3ej.png)
![image.png](https://cos.easydoc.net/31477061/files/km1ptdf4.png)