ThreadLocalRandom在java.util.concurrent包下,是一个与当前线程隔离的随机数生成器。它通过为每个线程实例化一个随机数生成器,来减少系统开销和对资源的争用。
通过current方法ThreadLocalRandom实例:

public static ThreadLocalRandom current() {
    if (UNSAFE.getInt(Thread.currentThread(), PROBE) == 0)
        localInit();
    return instance;
}

常用方法如下:

//返回一个整型的伪随机数
public int nextInt();
//返回一个0-bound之间的随机数
public int nextInt(int bound); 
//返回一个origin-bound之间的随机数
public int nextInt(int origin, int bound);
//返回一个long型随机数
public long nextLong();
//返回一个0-bound之间的随机数
public long nextLong(long bound);
//返回一个origin-bound之间的随机数
public long nextLong(long origin, long bound);
//返回一个double类型的随机数
public double nextDouble();
//返回一个0-bound之间的随机数
public long nextDouble(long bound);
//返回一个origin-bound之间的随机数
public long nextDouble(long origin, long bound);
//返回一个boolean类型的随机数
public boolean nextBoolean();
//返回一个float类型的随机数
public float nextFloat();

简单举例:

import java.util.concurrent.ThreadLocalRandom;

public class ThreadLocalRandomDemo {
  public static void main(String args[]) {
    int random=ThreadLocalRandom.current().nextInt();
    System.out.println(random);
  } 
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注