Я использовал concurrentHashMap для кэширования некоторых групп доступа. И я хочу чистить карту каждые 8 часов.
@Override
public GetAccessGroupsResponse getAccessGroups(IdentityContext identityContext, String userId, String orgId) {
GetAccessGroupsResponse response = null;
Date now = new Date();
boolean isUsingCache = false;
CachedAccessGroups accessGroups = cachedAccessGroups.get(userId);
if (accessGroups != null) {
if (now.getTime() - accessGroups.getCachedDate().getTime() < CACHE_TIMEOUT) {
response = accessGroups.getAccessGroups();
LOGGER.debug("Using cached access groups for {%s}", userId);
isUsingCache = true;
} else {
LOGGER.debug("Cached access groups timed out for {%s}", userId);
isUsingCache = false;
}
}
}