Как я могу кэшировать один объект?JAVA

Программисты JAVA общаются здесь
Anonymous
Как я могу кэшировать один объект?

Сообщение Anonymous »

У меня есть класс, который инициализирует свои внутренние данные из файла ресурсов, и я хочу дать клиентам возможность выбирать, использовать ли новые экземпляры или кэшированный экземпляр.
Вот как это выглядит.

Код: Выделить всё

// Immutable, hence, thread-safe
class MyClass {

// Returns a new instance.
public static MyClass newInstance() {
// Loads resources, and constructs a new object
}

private MyClass() {
}
}
И вот что я добавляю для тех клиентов, которые хотят использовать кэшированный экземпляр.

Код: Выделить всё

    private static volatile SoftReference INSTANCE;

// multiple instances may be created,
// in a timing manner,
// which is ok
private static MyClass getInstance() {
var result = INSTANCE;
if (result == null || result.get() == null) {
result = INSTANCE = new SoftReference(newInstance());
}
return result.get();
}

public static  R applyInstance(
final Function

Подробнее здесь: [url]https://stackoverflow.com/questions/79789816/how-can-i-cache-a-single-object[/url]

Вернуться в «JAVA»