ThreadLocal
2024.6.30
1.ThreadLocal的类声明: public class ThreadLocal<T> 可以看出ThreadLocal并没有继承自Thread,也没有实现Runnable接口。
2.ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量。 所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立
3.由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,不会被其他线程访问, 变量被彻底封闭在每个访问的线程中
4.ThreadLocal中定义了一个哈希表用于为每个线程都提供一个变量的副本
1 static class ThreadLocalMap { 2 static class Entry extends WeakReference<ThreadLocal> { 3 /** 4 The value associated with this ThreadLocal. 5 */ 6 Object value; 7 Entry(ThreadLocal k, Object v) { 8 super(k); 9 value = v; 10 } 11 } 12 private Entry[] table; 13 }
2024.7.2
1.内部使用的开放定址法