查看的源代码SecureRandom
,它使用一种synchronized
方法,因此synchronized
在多线程环境下进行的任何讨论都适用。
鉴于Random
javadoc中的这一注释(如您所述),我认为您的使用计划ThreadLocal<SecureRandom>
是适当的:
的实例java.util.Random
是线程安全的。但是,java.util.Random
跨线程并发使用同一实例可能会遇到争用并因此导致性能下降。考虑改为ThreadLocalRandom
在多线程设计中使用。
总结一下,您的实现不会遇到内存泄漏问题。这尤其如此,因为存储在中的对象ThreadLocal
来自系统ClassLoader,而不是来自Webapp的ClassLoader。