1
SoloCompany 2016-07-13 02:42:35 +08:00 1
单例+lazy init 而已( j8 还没有像 kotlin 那样原生带 lazy 真忧伤)
这说明了 Random 的实现应该是线程安全的 |
2
lowzoom 2016-07-13 08:11:51 +08:00
应该纯粹就是省代码,不想写成两行+中括号而已
|
3
hexzhou OP @SoloCompany 其实我的问题更加准确点说,是说为什么不直接 if ( r == null ) r = new Random(); (之前的 API 好像是这样实现的),而要引入一个新的变量 rnd ,这里面有什么特殊的目的吗?
|
4
SoloCompany 2016-07-13 15:39:54 +08:00
不使用局部变量的话, r 的声明应该要加 volatile 才比较安全,估计还是典型的 DCL 问题( Double Check Locking ),其实那一句 harmless race 备注已经基本上说明了意图了
|