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的并发编程可得知:
    可能会出现拿到别的线程设置的东西

 

posted @ 2022-05-19 22:18  努力的达子  阅读(29)  评论(0编辑  收藏  举报