说我有两个这样的课程:
class A{
private static Random random = new Random();
public A(){
// Do something.
}
public Integer methodGetsCalledQuiteOften(){
return random.nextInt();
}
}
class B{
private Random random;
public A(){
random = new Random();
// Do something.
}
public Integer methodGetsCalledQuiteOften(){
return random.nextInt();
}
}
在两个实例都被多次实例化并且这两个类的实例的方法methodGetsCalledQuiteOften被调用很多的情况下,使用持有Random()的静态变量是否有任何实际的优点/缺点(时间,内存)? 与在类B中在每个实例中创建一个新的Random()对象相反?
该应用程序是多线程的,并且具有更高的随机性,因此我认为我要使用静态SecureRandom。 如果这是配置后的真实速度因素,我可能会选择其他东西。
实际的优缺点取决于实际的代码。换句话说,它取决于创建一个B的频率与调用该方法的频率等的比率。
A会比B更有表现吗?当然。但是您是否会注意到取决于您的用法。 A会比B使用更少的内存吗?