Метод generateSecureRandom()
очень часто вызывается разными потоками, и я использую этот токен также для генерации идентификатора базы данных.
Стоит ли размещать поля random
и encoder
на уровне класса, чтобы сделать его более эффективным (локально для потока?)?
Если поставить random
или encoder
на уровне класса, будет ли заблокирован доступ к SecureRandom
для других потоков, пока один поток его использует? Я не хочу создавать пул экземпляров SecureRandom, но использую Thread-Local.
public final RandomGenerator{
public static String generateSecureRandom() {
// field will be created on each method call
final SecureRandom random = new SecureRandom();
// field will be created on each method call
final Base64.Encoder encoder = Base64.getUrlEncoder().withoutPadding();
byte[] buffer = new byte[20];
random.nextBytes(buffer);
return encoder.encodeToString(buffer);
}
}
Должен ли я размещать поля random
и encoder
на уровне метода или на уровне класса?