我正在编写一个带有十进制字段的类构造函数,需要通过随机值进行初始化.只需一个小字段,我需要创建新Random对象.首先它看起来繁琐,并且在第二有可能出现很多相等的值的,在一个时间片创建大量对象的情况下(new Random()是euqal到new Random(System.currentTimeMillis()),并且等于timeMillis需要等于随机值).
避免这种情况的最佳方法是什么?
新的Random()是新的Random(System.currentTimeMillis())的euqal
不,这不对.在最近的JDK中,new Random(seedUniquifier() ^ System.nanoTime());
seedUniquifier()基于在静态上运行线性同余生成器AtomicLong.因此,Random根据需要创建对象实际上是非常安全的.
当然,您始终可以拥有一个private static Random字段并在构造函数中使用它.
您正在寻找Math.random.这是一个静态方法,Random它在第一次调用时隐式初始化一个新对象,然后再使用该对象.因此,您可以获得Random在所有静态字段初始化之间共享单个对象的好处,而无需自己管理Random对象.
| 归档时间: |
|
| 查看次数: |
697 次 |
| 最近记录: |