1. 首页
  2. 编程语言
  3. Java
  4. java高并发情况下高效的随机数生成器

java高并发情况下高效的随机数生成器

上传者: 2021-06-09 03:01:50上传 PDF文件 1.06 MB 热度 23次

在Thread中的变量为了应对线程竞争,Java中有一个ThreadLocal类,为每一个线程分配了一个独立的,互不相干的存储空间。在Thread对象中,成员变量threadLocalRandomSeed,threadLocalRandomProbe,threadLocalRandomSecondarySeed被标记为同一个组tlr,使得这3个变量放置于一个单独的缓存行,而不与其它变量发生冲突,从而提高在并发环境中的访问速度。反射的高效替代方案随机数的产生需要访问Thread的threadLocalRandomSeed等成员,但是考虑到类的封装性,这些成员却是包内可见的。很不幸,ThreadLocalRandom位于java.util.concurrent包,而Thread则位于java.lang包,因此,ThreadLocalRandom并没有办法访问Thread的threadLocalRandomSeed等变量。其中threadLocalRandomSeed是long型的,threadLocalRandomSecondarySeed是int。而threadLocalRandomSecondarySeed只是某些特定的JDK内部实现中有使用,使用并不广泛。

用户评论