16.ThreadLocal简介
在java官方文档中描述:ThreadLocal类是提供线程内部的局部变量,这种变量在多线程环境下访问(通过get/set访问)时能保证各个线程的变量相对独立于
其他线程内的变量,ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文
我们可以得知ThreadLocal的作用是:提供线程内的局部变量,不同线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一线程内多个函数或者
组件之间一些公共变量传递的复杂度
总结:
1.线程并发:在多线程并发的场景下
3.线程隔离:每个线程的变量是独立的,不会相互影响
ThreadLocal的常用方法
需求:
起五个线程,每个线程拿到自己改的东西
原始示例如下:
public class MyDemo01 {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
class MyDemo01_Test {
public static void main(String[] args) {
MyDemo01 demo = new MyDemo01();
for (int i = 0; i < 100; i++) {
new Thread(() -> {
demo.setContent(Thread.currentThread().getName() + ":设置值");
System.out.println(Thread.currentThread().getName() + ":取出的值是--->" + demo.getContent());
}, "线程" + i).start();
}
}
}
预期的结果是:
各自的线程拿出自己设置的值
由juc的并发编程可得知:
可能会出现拿到别的线程设置的东西