Нет, просто сделать конструктор частным, не сделает поток класса безопасным
public static class RandomData {
private static final ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
private RandomData() { }
public String getRandomVal() {
/* generate random value and put the map, if this generated
value is not existing in the map, it will return or else
a new value is generated again and return. */
}
}
Используйте ConcurrentHashMap и его методы:
посмотрите на:
ConcurrentHashMap::computeIfAbsent
ConcurrentHashMap::putIfAbsent
эти методы являются атомами c и гарантированно безопасны.