private synchronized T update() {
        try {
            // Refresh the object.
            return updateFunction.apply(object);
        } catch (final RuntimeException e) {
            LOGGER.error(e.getMessage(), e);
            throw e;
        } finally {
            lastRefresh = Instant.now();
        }
    }
This class provides an object and updates the object asynchronously in the background periodically.
stroom-util/src/main/java/stroom/util/concurrent/AsyncReference.java