美文网首页
ThreadLocal 介绍及原理

ThreadLocal 介绍及原理

作者: 路Promenade | 来源:发表于2019-08-14 20:38 被阅读0次

    1.为什么要用 ThreadLocal

    问题场景一:高并发的时候,我们在调用一些公有的对象资源的时候,会有线程安全问题
    解决线程安全问题
    方法一:对全局变量进行加锁。缺点是其他线程要使用的话,就必须等待,耗时。
    方法二:把全局变量变成局部方法变量。这样就解决了线程安全问题。

    问题场景二:我既要解决安全问题,我又要实现全局共享呢?

    全局变量会造成线程安全问题,加锁会对性能有影响,设置为局部变量,那么就不能在各个方法中使用了。
    我们现在需要一个:既能够共用,但又不是全局变量线程安全的东西,仿佛是局部定义的变量能够在各个方法中重用一样

    这个时候就可以使用ThreadLocal来解决既能够共用,又不会造成线程安全的问题

    2.什么是 ThreadLocal

    ThreadLocal是一个关于创建线程局部变量的类

    通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。
    而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改

    ThreadLocal类比喻全局存放数据的盒子,盒子中可以存储每个线程的私有数据

    3.如何使用ThreadLocal

     // 1.创建,支持泛型
    ThreadLocal<String> stringThreadLocal = new ThreadLocal<>();
    
    // 2.set方法
    stringThreadLocal.set("lugq");
    
    // 3.get方法
    String s = stringThreadLocal.get();
    Log.i(TAG, "S:" + s);
    

    4.ThreadLocal原理

    相关文章

      网友评论

          本文标题:ThreadLocal 介绍及原理

          本文链接:https://www.haomeiwen.com/subject/ihznjctx.html