1. 程式人生 > >隨筆16 ThreadLocal類

隨筆16 ThreadLocal類

ont images pow with enc .cn weakref color col

① ThreadLocal類:

技術分享

ThreadLocal類的作用:

  • ThreadLocal類為每一個線程都維護了自己獨有的變量拷貝。每個線程都擁有了自己獨立的一個變量。所以ThreadLocal重要作用並不在於多線程間的數據共享,而是數據的獨立。Synchronized用於線程間的數據共享,而ThreadLocal則用於線程間的數據隔離
  • 由於每個線程在訪問該變量時,讀取和修改的,都是自己獨有的那一份變量拷貝,不會被其他線程訪問,變量被徹底封閉在每個訪問的線程中。
  • ThreadLocal中定義了一個哈希表用於為每個線程都提供一個變量的副本:
     1  static class ThreadLocalMap {
    
    2 static class Entry extends WeakReference<ThreadLocal> { 3 /** The value associated with this ThreadLocal. */ 4 Object value; 5 Entry(ThreadLocal k, Object v) { 6 super(k); 7 value = v; 8 } 9 }
    10 /** 11 * The table, resized as necessary. 12 * table.length MUST always be a power of two. 13 */ 14 private Entry[] table; 15 }

隨筆16 ThreadLocal類