-
Random,ThreadLocalRandom,SecureRandom是Java中的随机数生成器,其中ThreadLocalRandom是jdk7才出现的,是Random的增强版。在并发访问的环境下,使用ThreadLocalRandom来代替Random可以减少多线程竞争,最终保证系统具有更好的线程安全。
-
Random是线程安全的,但是多线程下可能性能比较低。
-
特别是在生成验证码的情况下,不要使用Random,因为它是线性可预测的。所以在安全性要求比较高的场合,应当使用SecureRandom。
-
从理论上来说计算机产生的随机数都是伪随机数,要想产生高强度的随机数,有两个重要的因素:种子和算法。当然算法是可以有很多的,但是如何选择种子是非常关键的因素。如Random,它的种子是System.currentTimeMillis(),所以它的随机数都是可预测的。那么如何得到一个近似随机的种子?这里有一个很别致的思路:收集计算机的各种信息,如键盘输入时间,CPU时钟,内存使用状态,硬盘空闲空间,IO延时,进程数量,线程数量等信息,来得到一个近似随机的种子。这样的话,除了理论上有破解的可能,实际上基本没有被破解的可能。而事实上,现在的高强度的随机数生成器都是这样实现的。
相关文章
- 02-05Random,ThreadLocalRandom,SecureRandom的几点思考
- 02-05C++中使用union的几点思考(转)
- 02-05ThreadLocalRandom_Random在并发环境下的替代者
- 02-05SAP License:对煤化工行业的几点思考
- 02-05分享我的的几点思考。
- 02-05ServerSuperIO 3.5版本的体系结构,以及未来规划的几点思考
- 02-05Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
- 02-05Java如何生成随机数 - Random、ThreadLocalRandom、SecureRandom
- 02-05火车票订票系统的几点优化思考
- 02-05Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom