面试必问之 – ThreadLocal
💡
原文中文,约6100字,阅读约需15分钟。
📝
内容提要
ThreadLocal是一个线程内部的数据存储类,能够在指定的线程中存储数据,每个线程的数据都是独立的。ThreadLocal的set()方法先获取当前线程的ThreadLocalMap目标,然后将数据存入Map中。ThreadLocalMap是ThreadLocal内部的一个静态类,它是一个弱引证目标,用于存储数据。ThreadLocal的get()方法先获取当前线程的ThreadLocalMap目标,然后从Map中获取数据,如果Map为空,则将初始值存入Map中。ThreadLocal的存储和获取数据的操作都依赖于ThreadLocalMap目标。
🎯
关键要点
- ThreadLocal是一个线程内部的数据存储类,能够在指定的线程中存储独立的数据。
- ThreadLocal的set()方法通过获取当前线程的ThreadLocalMap目标来存储数据。
- ThreadLocalMap是ThreadLocal内部的静态类,用于存储数据,并且是一个弱引用目标。
- ThreadLocal的get()方法从当前线程的ThreadLocalMap中获取数据,如果Map为空,则将初始值存入Map中。
- ThreadLocal的存储和获取操作依赖于ThreadLocalMap目标,确保每个线程的数据互不干扰。
- ThreadLocalMap的构造方法初始化了一个Entry数组,并将数据存储在其中。
- Entry是ThreadLocalMap内部的静态类,继承自WeakReference,用于存储数据并在内存不足时自动回收。
- ThreadLocal的set()和get()方法通过ThreadLocalMap实现数据的存储和获取,确保线程间数据的独立性。
🏷️
标签
➡️