美文网首页
java中的ThreadLocalRandom类

java中的ThreadLocalRandom类

作者: jackLee | 来源:发表于2016-10-11 16:00 被阅读2239次

Java中提供了好几个类,可以让我们方便的实现随机数等功能,
这些类有java.util.Random, java.util.UUID **
以及JDK 7 新引入的
java.util.concurrent.ThreadLocalRandom**等。

  • Random虽然是线程安全的,但是在多线程下效率比较低,而且Random产生的随机数可能被预测,顾不适合做验证码类的随机数生产。

  • 在JDK7中,java.util.concurrent包含了一个相当便利的类,ThreadLocalRandom,当应用程序期望在多个线程或ForkJoinTasks中使用随机数时。

  • 对于并发访问,使用TheadLocalRandom代替Math.random()可以减少竞争,从而获得更好的性能。

  • 你只需调用ThreadLocalRandom.current(), 然后调用它的其中一个方法去获取一个随机数即可。

一个例子:

<pre>
int r = ThreadLocalRandom.current().nextInt(4,77);

</pre>

为什么使用ThreadLocalRandom在并发情况下,性能更好?

  • 因为Random用了很多CAS的类,ThreadLocalRandom根本没有用到。

展开阅读

相关文章

网友评论

      本文标题:java中的ThreadLocalRandom类

      本文链接:https://www.haomeiwen.com/subject/pxdbyttx.html