2015-11-25 3 views
0

Я все еще изучаю программирование и сталкивался с интересной задачей, которую я должен выполнить. Ваша помощь будет высоко оценена, так как я понятия не имею, как реализовать такую ​​задачу, и я боролся с ней уже пару дней ...Тайм-аут hashtable Java

Класс, который хранит элементы в Hashtable в течение определенного времени , По истечении времени значение и ключ должны быть удалены. Доступ к значению или управление им, сбрасывает таймер для этого значения. Все, что мне удалось выяснить, это использовать таймер, но я понятия не имею, с чего начать. Я не могу использовать ничего другого, как Guava MapMaker, предложенный в других ответах.

Буду признателен за ваши идеи и помогите ребятам!

ответ

1

Создайте класс с параллельным Hashmap с помощью методов, таких как put, get and remove.

При размещении элемента добавьте его на карту и заплатите runnable, чтобы удалить его через некоторое время. Для этого см. Класс SchedulerExecutorService.

Метод службы исполнителя возвращает будущее, которое позволяет при необходимости отменить процесс удаления.

+0

спасибо, что вы человек. Вы проверите это! Знаете ли вы хорошие источники подобных проблем? Мой фон не удаленно связан с программированием и информатикой, и я бы с удовольствием просмотрел некоторые чтения по этому вопросу. –

+0

Честно говоря, я бы использовал библиотеку Guava, которая обеспечивает реализацию кэша. См. Https://github.com/google/guava/wiki/CachesExplained (Если у вас больше нет проблем, подумайте о том, чтобы принять ответ на эту тему, чтобы помочь другим людям с одним и тем же вопросом легко найти его) – Prim

0

Если вы используете свое решение, это, вероятно, будет включать записи в ConcurrentMap, которые имеют временную метку. Тогда у вас будет запланированная работа (см. ScheduledExecutorService), которая удаляет устаревшие записи.

Эта проблема была решена много раз многими реализациями кеша. См. Guava's CacheBuilder для одной такой реализации.

+0

спасибо, что посмотрели. Вы проверите это! Знаете ли вы хорошие источники подобных проблем? Мой фон не удаленно связан с программированием и информатикой, и я бы с удовольствием просмотрел некоторые чтения по этому вопросу. –