明理蜻蜓

文章
6
资源
0
加入时间
3年0月8天

【Java】随机数原理 Random ThreadLocalRandom

大致生成原理:随机数由seed经过一定的转换生成。需要提供初始seed。每一次生成随机数时,先由老seed生成新seed,再根据新seed生成新的随机数。由于算法是固定的,所以如果初始seed一样,那么生成的随机数序列就是一样的,这就是为什么Java的随机数要被叫做“伪随机数”。数学逻辑这里不展开。主要实现类有两个Random以及ThreadLocalRandom。这两个都是线程安全的,区别在于解决并发生成新seed的方式不一样。Random是通过cas+自旋的方式,所以高并发场景下会有竞争,可