多线程-ThreadLocal的使用
Posted wanthune
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程-ThreadLocal的使用相关的知识,希望对你有一定的参考价值。
ThreadLocal: 每个线程只能修改本线程在ThreadLocal中的值,各个线程之间互不干扰。
/**
* ThreadLocal线程局部变量
*
* ThreadLocal是使用空间换时间,synchronized是使用时间换空间
* 比如在hibernate中session就存在与ThreadLocal中,避免synchronized的使用
*
* 运行下面的程序,理解ThreadLocal
*
* @author 马士兵
*/
package yxxy.c_022;
import java.util.concurrent.TimeUnit;
public class ThreadLocal2 {
//volatile static Person p = new Person();
static ThreadLocal<Person> tl = new ThreadLocal<>();
public static void main(String[] args) {
new Thread(()->{
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(tl.get());// 输出null
}).start();
new Thread(()->{
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
tl.set(new Person());
}).start();
}
static class Person {
String name = "zhangsan";
}
}
以上是关于多线程-ThreadLocal的使用的主要内容,如果未能解决你的问题,请参考以下文章