当前位置:网站首页>淺淺的談一下ThreadLocalInsecureRandom

淺淺的談一下ThreadLocalInsecureRandom

2022-07-05 19:50:00 步爾斯特

今天看了一眼隨機數相關,無意間發現了這個類。

在這裏插入圖片描述
這看起來真不錯啊,有繼承了SecurityRandom,又帶有ThreadLocal字樣,難道擁有了二者的特性,成為了結合體?

我們來一探究竟。

先來看看它是如何生成隨機數的

    @Override
    public int nextInt() {
    
        return random().nextInt();
    }

跟踪,看來這個random方法是它核心了。

    private static Random random() {
    
        return PlatformDependent.threadLocalRandom();
    }

PlatformDependent是netty下的,我們日後再說它。

跟踪

    public static Random threadLocalRandom() {
    
        return RANDOM_PROVIDER.current();
    }

跟踪

private interface ThreadLocalRandomProvider {
    
    Random current();
}

跟踪,哦~

原來在這,原來底層用的還是ThreadLocalRandom啊,不過時jdk7及以上,用jdk的方式實現了。


    static {
    
        if (javaVersion() >= 7) {
    
            RANDOM_PROVIDER = new ThreadLocalRandomProvider() {
    
                @Override
                @SuppressJava6Requirement(reason = "Usage guarded by java version check")
                public Random current() {
    
                    return java.util.concurrent.ThreadLocalRandom.current();
                }
            };
        } else {
    
            RANDOM_PROVIDER = new ThreadLocalRandomProvider() {
    
                @Override
                public Random current() {
    
                    return ThreadLocalRandom.current();
                }
            };
        }

看了一眼netty和jdk下的ThreadLocalRandom實現方式,還是有很大的不同,感興趣自己去看看吧。

回頭看了一眼ThreadLocalInsecureRandom還不是public修飾的,啥也不是,下課。

原网站

版权声明
本文为[步爾斯特]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207051946353806.html