Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom(转)区别
总结:
Random:伪随机数,种子默认使用系统的时间,可预测安全性不高,线程安全;
ThreadLocalRandom:多线程中使用,虽然Random线程安全,但是由于CAS乐观锁消耗性能,所以多线性推荐使用ThreadLocalRandom;
SecureRandom:可以理解为Random升级,它的种子选取比较多,主要有:时间,cpu,使用情况,点击事件等一些种子,安全性高。
相同点:种子相同,在相同条件,运行相同次数产生的随机数相同;
SecureRandom secureRandom1 =new SecureRandom("abcd".getBytes());
SecureRandom secureRandom2 =new SecureRandom("abcd".getBytes());
for (int i=0;i<10;i++)
System.out.print(secureRandom1.nextInt(100)+",");
System.out.println();
for (int i=0;i<10;i++)
System.out.print(secureRandom2.nextInt(100)+",");
System.out.println();
结果为:
34,44,40,30,1,73,49,4,37,56,
34,44,40,30,1,73,49,4,37,56,