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();
Java 7之前我们使用Math.random()产生随机数,使用原子变量来保存当前的种子,这样两个线程同时调用序列时得到的是伪随机数,而不是相同数量的两倍。
ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。ThreadLocalRandom不是直接用new实例化,而是第一次使用其静态方法current()。
从Math.random()改变到ThreadLocalRandom有如下好处:
我们不再有从多个线程访问同一个随机数生成器实例的争夺。
取代以前每个随机变量实例化一个随机数生成器实例,我们可以每个线程实例化一个。
代码改变如下:
// double u = r.nextDouble();
double u = ThreadLocalRandom.current().nextDouble();
相关文章推荐
- 在eclipse.ini中指定jdk的方式
- Spring+SpringMVC+mybatis+easyui整合实例(五)使用mybatis拦截器分页
- spark下读写lzo文件(java)
- java 代理 进程ID
- java socket 客户端和服务端通信
- Java 读取txt文件,读取结果保存到数据库
- java 读取文件 乱码
- java线程同步(生产者消费者应用-模拟叫号系统)
- 浅谈java异常[Exception]
- Java指定编码格式读写文件
- Java String 常用方法
- jdk环境变量配置
- Java NIO2:NIO概述
- Java NIO:浅析I/O模型
- Java FileInputStream与FileReader的区别
- java.lang.OutOfMemoryError处理
- Spring@Autowired注解与自动装配
- Java 动态代理
- javax.naming.NamingException: Cannot create resource instance
- java开源验证框架OVAL帮助文档