JDK 1.8 源码注释
-
InheritableThreadLocal
跟ThreadLocal
差不多,关键点在Thread#init
方法中会对Thread
中的实例变量inheritableThreadLocals
进行赋值操作,将父线程的本地变量复制到子线程中 -
- 首先通过
ServiceLoader.load
方法生成一个ServiceLoader
实例 - 然后在遍历的过程中去解析文件中的内容,去生成具体的实现类
- 然后再去调用具体的实现方法
只有在用到某个实现类的时候才会去解析文件中的内容,而且是全部解析,即并不是我们需要的实现类也会解析。而且需要遍历才能找到我们想要的那个实现类。
文件中的内容被加载一次,然后被缓存起来,下次直接取就行。
如果想要重新加载,可以调用
reload()
方法 - 首先通过