Рациональное использование LoadingCache

164
25 марта 2019, 04:30

Есть некоторое действие, которые вызывается пользователем. Нужно сделать так, чтобы это действие можно было юзать раз в N секунд. Для реализации я решил использовать com.google.common.cache.LoadingCache.

private static final LoadingCache<String, Boolean> cache = CacheBuilder.newBuilder()
        .expireAfterWrite(10, TimeUnit.SECONDS)
        .maximumSize(50)
        .build(new CacheLoader<String, Boolean>() {
            @Override
            public Boolean load(@Nonnull String name) throws Exception {
                return true;
            }
        });
public static Boolean get(String name) {
    return cache.getIfPresent(name);
}

Т.е. вызов метода get будет всегда возвращать мне true в случае, если ключ присутствует в кэше, а иначе null. Как можно заменить из создания LoadingCache -> expireAfterWrite(N, TimeUnit.SECONDS) внесённые данные будут удаляться спустя N секунд после добавления их туда. Мне не нравится то,что я везде таскаю за собой не нужный boolean, есть ли такой же "автоматический" кэш для одного значения? Если нет, то как лучше улучшить текущий код?

READ ALSO
Подружить Java и Python

Подружить Java и Python

заранее извиняюсь за столь общий и размытый вопросСобираемся писать приложение (некоммерческое) для платформы Android, хотим прикрутить к нему...

138
После удаления поля, меняется порядок

После удаления поля, меняется порядок

Ввожу команду и она пишется в репозиторий, и в бдid: 1 name:

225
Как записывать и читать отдельные биты из байта

Как записывать и читать отдельные биты из байта

Допустим у меня есть байт, и в нем я хочу хранить 8 boolean'овКак мне читать и записывать отдельные биты в байт? Пожалуйста без битсета, я хочу понять...

161
Разное выравнивание на разных экранах

Разное выравнивание на разных экранах

Есть 2 блока которые на больших экранах нужно отобразить в один ряд с выравниванием содержимого по левому краю, а на маленьких в два ряда и с выравниванием...

175