568 B
568 B
Random 类及其局限性
生成随机数
- 根据老的种子生成新的种子
- 根据新的种子来计算新的随机数
多个线程同时计算随机数生成新的种子的时候,多个线程会竞争同一个原子变量的更新操作,由于是 CAS 操作,大量线程自旋重试,降低并发性能
ThreadLocalRandom
类似 ThreadLocal,让每个线程都维护一个种子变量,就不存在竞争问题
源码分析
继承了 Random 类并重写了 nextInt 方法,具体种子存放在调用线程的 threadLocalRandomSeed 变量中