请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于ThreadLocal使用场景一

老师, 我想问下, ThreadLocal使用场景一中提到: SimpleDateFormat, Random等在多线程访问时是不安全的, 有点不理解.
我理解的是Random中方法是生成随机数, 那多个线程调用, 怎么会不安全呢, 不是一个线程拿到一个随机数么, 不同线程也没啥影响啊.

正在回答

1回答

恩,如果从随机的角度考虑,那么确实一个线程拿到一个随机数,不同线程也没啥影响的。

另外,在random这里使用ThreadLocal,主要是为了解决效率问题,如果多个线程需要等待一个共享的随机数生成器java..util.Random 类, 这会很低效。


可以使用ThreadLocal 辅助类为各个线程提供一个单独的生成器, 不过Java SE 7 还另外提供了一个便利类。只需要做以下调用:

int random = ThreadLocalRandom.curren().nextInt(upperBound) :

ThreadLocalRandom.current() 调用会返回特定于当前线程的Random 类实例。

可以参考:https://stackoverflow.com/questions/5819638/is-random-class-thread-safe

0 回复 有任何疑惑可以回复我~
  • 提问者 woy #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-02-12 19:47:56
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信