1. 程式人生 > >java 並發基礎

java 並發基礎

oca 設置 rman thread url urn ger class set

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>,它存儲了線程相關的值,不過事實上它並非這樣實現的,與線程相關的值存儲在線程對象自身中,線程終止後,這些值會被垃圾回收。

  

  相比全局變量,線程本地變量會降低可重用性,引入隱晦的類間耦合。

  

java 並發基礎