首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SecureRandom线程安全吗?

SecureRandom线程安全吗?
EN

Stack Overflow用户
提问于 2009-09-22 17:53:36
回答 1查看 23.9K关注 0票数 110

SecureRandom线程安全吗?也就是说,在初始化之后,是否可以依赖对下一个随机数的访问来保证线程安全?检查源代码似乎表明它是安全的,而this bug report似乎表明它缺乏作为线程安全的文档是一个javadoc问题。有没有人确认它实际上是线程安全的?

EN

回答 1

Stack Overflow用户

发布于 2010-04-28 12:47:03

SecureRandom的当前实现是线程安全的,特别是两个变异方法nextBytes(bytes[])setSeed(byte[])是同步的。

据我所知,所有变异方法最终都是通过这两个方法路由的,SecureRandom覆盖了Random中的一些方法以确保这一点。它可以工作,但如果将来实现发生变化,它可能会变得脆弱。

最好的解决方案是先在SecureRandom实例上手动同步。这意味着每个调用堆栈将在同一对象上获得两个锁,但这在现代JVM上通常非常便宜。也就是说,显式同步并没有太大的危害。例如:

代码语言:javascript
复制
    SecureRandom rnd = ...;

    byte[] b = new byte[NRANDOM_BYTES];
    synchronized (rnd) {
        rnd.nextBytes(b);
    }
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1461568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档