ThreadLocal 使用场景及其细节
ThreadLocal 的使用场景
- 保存每个线程独享对象, 为每个对象都创建一个副本,确保了线程的安全。
- 每个线程需要独立的保存信息,以便其他方法可以更加方便的获取。
- 应该在使用完成后显示的掉用 remove() 方法移除掉, 避免内存泄露。
ThreadLocal 和 synchronized 是什么关系?
- 都是作为保证线程安全的工具。
- ThreadLocal 是通过让每个线程独享资源副本,避免了资源的竞争。
- ThreadLocal 不是为了解决共享资源的多线程访问的问题
- synchronized 是用于临界资源的分配,资源访问排他性,来保证资源多线程访问下的安全。
Thread ThreadLocalMap TheadLocal 之间的关系
image.pngThreadLocalMap 与 HashMap 的区别?
- HashMap 解决hash 冲突的方式是通过拉链法 。
- ThreadLocalMap 解决hash 冲突的方式是 线性探测法 , 如果发生hash 冲突会继续寻找下一个格子。
网友评论