我有一个Spring 3的服务方法,我希望从中返回PrivateKey / PublicKey密钥对 - 在服务中将KeyPairGenerator作为实例级变量是线程安全的吗?以避免在方法调用中调用KeyPairGenerator.getInstance(algo)并初始化它,还是应该将KeyPairGenerator保留在服务方法本地,并为每个方法调用调用.getInstance(algo)和.initialize(...),例如:
public KeyPair getKeyPair() throws ... {
KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(algo);
keyGenerator.initialize(1024);
return (keyGenerator.genKeyPair());
}
或者
public KeyPair getKeyPair() throws ... {
// use instance level keyGenerator that has been previously initialized
return (keyGenerator.genKeyPair());
}
第二种方法是否存在可能的并发问题?第一种方法的性能惩罚是否显著?