2021年12月1日30道面试题

1.ThreadLocal的作用和原理以及使用场景?

  threadlocal是线程本地变量,它为每一个线程创建一个变量副本,来解决并发冲突问题

  在jdk1.8以之前,每个threadlocal实例维护一个map,每个线程作为key,value保存的就是变量副本

  在jdk1.8,改为每个Thread中维护一个threadlocalMap,threadlocal作为key,value保存变量副本

  这样设计,threadLocalMap中的键值对数量就取决于threadlocal实例的数量,提高了访问效率。当线程被销毁,threadlocalMap也会随之销毁,减少了内存的消耗

  使用场景:

  spring security中,我们使用SecurityContextHolder来获取SecurityContext,

​   比如在springMVC中,我们通过RequestContextHolder来获取当前请求,

​   比如在 zuul中,我们通过ContextHolder来获取当前请求

上一篇:Java ThreadLocal示例及使用方法总结


下一篇:《Java多线程编程核心技术第二版》读书笔记