¿Simple biblioteca de almacenamiento en caché de Java o patrón de diseño?

Necesito acceder frecuentemente al resultado de un cálculo que consume mucho tiempo. El resultado cambia con poca frecuencia, por lo que tengo que volver a calcular los datos de vez en cuando, pero está bien usar el resultado desactualizado por un tiempo. ¿Cuál sería la forma más fácil de hacerlo y existe un método de biblioteca o un patrón de diseño existentes?

Estoy pensando en algo asi

private static List myCachedList = null;

...

// refresh list once in 3600 seconds
if (needsRefresh(myCachedList, 3600)) {
    // run the calculation
    myCachedList = ...
}
// use either updated or previous value from here on

Una implementación adecuada podría no ser trivial, podría tener que lidiar con la seguridad de los subprocesos, las condiciones de carrera, etc., por lo que preferiría usar una implementación probada que rodar la mía aquí.

Respuestas a la pregunta(4)

Su respuesta a la pregunta