2011-09-30 11 views
9

Estoy un poco confundido por CacheBuilder y Cache introducido en Guava 10. La documentación insinúa que es posible overwrite values pero hasta donde puedo decir, Cache no contiene ningún método para hacerlo. ¿Algunas ideas?¿Cómo poner() los valores en la clase de caché de Guava?

Estoy tratando de construir un mapa que expira una clave 10 segundos después de la última lectura o escritura. Cuando se busca un valor, espero que se devuelva el valor previamente establecido o que se calcule un valor predeterminado si no existe ninguno.

NOTA: Esta pregunta no está actualizada. Aunque el Javadoc anterior muestra la existencia de un método Cache.put(K key, V value), no existe cuando la pregunta se publicó por primera vez.

Respuesta

6

Desde hace mucho tiempo, Cache#asMap devuelve ConcurrentMap ver.

AFAIK, aún no. Pero hay un thread mencionar que Cache.asMap.put está prevista para el lanzamiento 11.

yo diría que el actual viejo estado del Javadoc es un remanente, si en el método de configuración de caché de la evolución de la MapMakerCacheBuilder 's (están actualmente en desuso).

Estoy tratando de construir un mapa que expira una clave 10 segundos después de la última lectura o escritura. Cuando se busca un valor, espero que se devuelva el valor previamente establecido o que se calcule un valor predeterminado si no existe ninguno.

El uso de expireAfterAccess(10, TimeUnit.SECONDS) mantendrá una entrada activa durante 10 segundos después de acceder a ella. Y los únicos valores que obtendrá son los calculados por su CacheLoader (antes o durante get).

+3

Guava 10.0.1 debería haber corregido esto. http://groups.google.com/group/guava-discuss/browse_thread/thread/f01f7583bb4422d7 – jvdneste

3

Actualización de menor importancia. Cache.asMap().put() debe aparecer en Guava 10.1 en algún momento durante la primera semana de octubre de 2011. Consulte this thread para obtener más información.

Cuestiones relacionadas