2016-09-18 3 views
0

지정된 시간 동안 액세스하지 않으면 항목이 자동으로 만료되는 java.util.Map 구현이 있습니까? 자동 제한 시간이있는 항목을 만료하는 라이브러리를 많이 발견했습니다. 하지만 여분의 조건이 있습니다. 항목은 기간 동안 액세스하지 않는 경우에만 제거해야합니다. 당신은 지정된 시간 후 퇴거됩니다 무언가를 원하는 경우 항목이 지정된 시간 동안 조회되지 않는 경우자동으로 액세스하지 않는 요소를 자동으로 매핑합니다.

+0

번호 2입니다. 이미 https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/map/PassiveExpiringMap.html이 있으며 객체가 만료되지 않은 경우 액세스시 만료 시간을 재설정하도록 확장 할 수 있습니다. 아직. 또한 아마 이미 본 적이 있지만 기본 만료지도는 http://stackoverflow.com/questions/3802370/java-time-based-map-cache-with-expiring-keys를 참조하십시오. 편집 : 아래 답변을 훨씬 더 좋아 보인다. –

답변

3

Guava's cache을 사용할 수 있습니다.

그것은 두 가지 옵션이 있습니다

  1. expireAfterWrite 다음 항목이 캐시에 추가 된 이후 일정 시간 후 항목을 만료합니다.
  2. expireAfterAccess : 항목이 캐시에서 마지막으로 액세스 된 이후 일정 기간 후 항목을 만료시킵니다.

은 당신이 원하는 것은 아파치이 매우 쉽습니다의 수동 버전을 구현하기 위해 사용할 수있는 AbstractMapDecorator있다

관련 문제