zoukankan      html  css  js  c++  java
  • java 并发基础

    ThreadLocal

      允许将每个线程与持有数值的对象关联在一起,提供get,set访问器,为每个使用它的线程维持一份单独的拷贝。所以,get总是返回由当前执行线程通过set设置的最新值。

      例通过ThreadLocal存储jdbc数据库连接使其成为线程安全的。

      

    private static ThreadLocal<Connection> conn=new ThreadLocal<Connection>(){
            public  Connection initialValue(){
                    return DriverManager.getConnection(DB_URL);
                    }
        }
     public static Connection getConnection(){
        return conn.get();
    }
    

      线程首次调用ThreadLocal.get方法时,会请求initialValue提供一个初始值。

      概念上来说,可以将ThreadLocal<T>看作map<Thread,T>,它存储了线程相关的值,不过事实上它并非这样实现的,与线程相关的值存储在线程对象自身中,线程终止后,这些值会被垃圾回收。

      

      相比全局变量,线程本地变量会降低可重用性,引入隐晦的类间耦合。

      

  • 相关阅读:
    次小生成树模板(poj1679)
    ISAP模板
    ZOJ3781
    Uva12663
    LightOJ1089
    网络流DINIC模板
    FZU2030(括号匹配)
    NOIP2011提高组(选择客栈)
    DRF之视图家族
    DRF多表设计与ModelSerializer组件
  • 原文地址:https://www.cnblogs.com/UalBlog/p/10594659.html
Copyright © 2011-2022 走看看