大家好,关于如何追踪源网站源码分享很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于追踪网站地址的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
该类可以提供线程内部的局部变量,也就是线程的私有变量。在多线程环境下,这种变量可以保证各个线程中的变量独立于其它线程的变量。
先从get方法说起
我们查看ThreadLocal的get()方法,如果在map为空的时候,会调用initialValue()方法,也就是返回null。
如果map不为空,那么,先获取当前线程对象t,然后调用ThreadLocal的getMap()方法。
ThreadLocalMapgetMap(Threadt){
returnt.threadLocals;
}
我们发现getMap方法是获取当前线程对象的threadLocals参数。到这里,我们发现虽然我们ThreadLocal对象一般声明为静态的,可以供所有对象共同使用,实际上,真正的值是存储在每个线程对象内部的。
然后回到ThreadLocal的get()方法,获取到当前线程的threadLocals后,以当前ThreadLocal对象为参数,获取具体的值。
再说set方法
查看set方法,跟踪newEntry(key,value),
再查看super方法,发现ThreadLocalMap的key(ThreadLocal对象)是使用的弱引用,从JDK的源码的注释中得知,建议把ThreadLocal对象设为privatestatic,从上面代码中可以看出,如果ThreadLocal对象被垃圾回收了,那么ThreadLocalMap的key会为null,就会造成内存泄漏。
所以源码在get和set方法里都删除了为null的key。
最后再来一张内存模型
关于如何追踪源网站源码分享和追踪网站地址的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。