Files
Hui-s-notebook/Java 并发包中 ThreadLocalRandom 类原理剖析.md
2023-09-10 10:50:53 +08:00

568 B

Random 类及其局限性

生成随机数

  • 根据老的种子生成新的种子
  • 根据新的种子来计算新的随机数

多个线程同时计算随机数生成新的种子的时候,多个线程会竞争同一个原子变量的更新操作,由于是 CAS 操作,大量线程自旋重试,降低并发性能

ThreadLocalRandom

类似 ThreadLocal,让每个线程都维护一个种子变量,就不存在竞争问题

源码分析

继承了 Random 类并重写了 nextInt 方法,具体种子存放在调用线程的 threadLocalRandomSeed 变量中