您的位置:首页 > 编程语言 > Java开发

java-性能

2015-10-15 16:55 232 查看
1.使用ThreadLocalRandom.current()代替Math.random()产生随机数

Java 7之前我们使用Math.random()产生随机数,使用原子变量来保存当前的种子,这样两个线程同时调用序列时得到的是伪随机数,而不是相同数量的两倍。

ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。ThreadLocalRandom不是直接用new实例化,而是第一次使用其静态方法current()。

从Math.random()改变到ThreadLocalRandom有如下好处:

我们不再有从多个线程访问同一个随机数生成器实例的争夺。

取代以前每个随机变量实例化一个随机数生成器实例,我们可以每个线程实例化一个。

代码改变如下:

// double u = r.nextDouble();

double u = ThreadLocalRandom.current().nextDouble();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: