当前位置: 首页 > 面试题库 >

随机于ThreadLocalRandom

佘飞鸣
2023-03-14
问题内容

java.util.Random的实例是线程安全的。但是,跨线程并发使用同一java.util.Random实例可能会引起争用并因此导致性能下降。考虑在多线程设计中改用ThreadLocalRandom。

什么样的争执因而表现不佳?有人可以在这里给我解释吗?我不知道在Random和ThreadLocalRandom中使用什么算法使它们与众不同。


问题答案:

这可能会有所帮助:

http://thoughtfuljava.blogspot.com/2012/09/prefer-threadlocalrandom-over-
random.html

引用来源:

通常,要生成随机数,我们要么创建java.util.Random的实例,要么创建Math.random()-在第一次调用时在内部创建java.util.Random的实例。但是,在并发应用程序中,使用上述内容会导致争用问题

随机是线程安全的,可供多个线程使用。 但是,如果多个线程使用相同的Random实例,则多个线程共享同一种子。它导致多个线程之间的争用,从而导致性能下降。

ThreadLocalRandom是上述问题的解决方案。 ThreadLocalRandom每个线程都有一个Random实例,可以防止争用。

因此,基本上,每个线程使用一个随机实例可以使您停止所有线程必须使用的种子上的同步。



 类似资料:
  • 我已经生成了一个从1-100的随机数,但不会出现重复的数字(例如,如果10来一,那么它不会再来了。)(这个不行) 我如何使用生成的出现在屏幕底部,使用户必须知道什么数字是1-100所有的数字是做了,然后没有数字生成 有谁能帮帮我吗?

  • 问题内容: 有没有什么方法可以模拟Collections.shuffle的行为,而比较器不容易受到排序算法实现的影响,从而确保结果安全? 我的意思是不违反可比合同等。 问题答案: 不打破合同就不可能实现真正的“改组比较器”。合同的一个基本方面是,结果是可 重现的, 因此必须确定特定实例的顺序。 当然,您可以使用混洗操作预先初始化该固定顺序,并创建一个比较器来精确地建立此顺序。例如 虽然没有意义。显

  • 是否有任何方法可以模拟Collections.shuffle的行为,而比较器不容易受到排序算法实现的影响,以确保结果安全? 我的意思是不违反类似的合同等..

  • 我试图理解与Spring数据JPA的使用。考虑以下是从表中拉出的位置。 公共接口用户存储库扩展了JpaRepository{ 一切都很好。现在,在同一个界面上,我可以添加如下方法,其中它是从中提取的,它将与实体类不匹配。 A这也很好用。现在我真正的问题是,如果实体类与无关,为什么我们需要实体类。我们只是想确保代码能够正确编译吗?这是否意味着我甚至可以将任何类放入

  • 例如下面的代码。它有一个随机类。然而,它总是在任何地方产生相同的输出。在这种情况下,哪一项是种子? 来源:link

  • 配置 UserAgent 列表 @app.beans: [ 'UserAgentManager' => [ 'list' => [ // 这里可以放想要用的 UserAgent 列表 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36