今天看了一眼随机数相关,无意间发现了这个类。
这看起来真不错啊,有继承了SecurityRandom,又带有ThreadLocal字样,难道拥有了二者的特性,成为了结合体?
我们来一探究竟。
先来看看它是如何生成随机数的
@OverridepublicintnextInt(){returnrandom().nextInt();}
跟踪,看来这个random方法是它核心了。
privatestaticRandomrandom(){returnPlatformDependent.threadLocalRandom();}
PlatformDependent是netty下的,我们日后再说它。
跟踪
publicstaticRandomthreadLocalRandom(){return RANDOM_PROVIDER.current();}
跟踪
privateinterfaceThreadLocalRandomProvider{Randomcurrent();}
跟踪,哦~
原来在这,原来底层用的还是ThreadLocalRandom啊,不过时jdk7及以上,用jdk的方式实现了。
static{if(javaVersion()>=7){
RANDOM_PROVIDER =newThreadLocalRandomProvider(){@Override@SuppressJava6Requirement(reason ="Usage guarded by java version check")publicRandomcurrent(){returnjava.util.concurrent.ThreadLocalRandom.current();}};}else{
RANDOM_PROVIDER =newThreadLocalRandomProvider(){@OverridepublicRandomcurrent(){returnThreadLocalRandom.current();}};}
看了一眼netty和jdk下的ThreadLocalRandom实现方式,还是有很大的不同,感兴趣自己去看看吧。
回头看了一眼ThreadLocalInsecureRandom还不是public修饰的,啥也不是,下课。
版权归原作者 步尔斯特 所有, 如有侵权,请联系我们删除。