java中ThreadLocalRandom的使用详解(ava,java,threadlocalrandom,编程语言)

时间:2024-04-29 19:34:48 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    java%E4%B8%ADThreadLocalRandom%E7%9A%84%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3

在java中我们通常会需要使用到java.util.Random来便利的生产随机数。但是Random是线程安全的,如果要在线程环境中的话就有可能产生性能瓶颈。

我们以Random中常用的nextInt方法为例来具体看一下:

nextInt方法实际上调用了下面的方法:

从代码中我们可以看到,方法内部使用了AtomicLong,并调用了它的compareAndSet方法来保证线程安全性。所以这个是一个线程安全的方法。

其实在多个线程环境中,Random根本就需要共享实例,那么该怎么处理呢?

在JDK 7 中引入了一个ThreadLocalRandom的类。ThreadLocal大家都知道就是线程的本地变量,而ThreadLocalRandom就是线程本地的Random。

我们看下怎么调用:

我们来为这两个类分别写一个benchMark测试:

分析运行结果,我们可以看出ThreadLocalRandom在多线程环境中会比Random要快。

本文的例子可以参考https://github.com/ddean2009/learn-java-concurrency/tree/master/ThreadLocalRandom

到此这篇关于java中ThreadLocalRandom的使用详解的文章就介绍到这了,更多相关java ThreadLocalRandom内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

本文:java中ThreadLocalRandom的使用详解的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java14发布了,再也不怕NullPointerException了下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18