private synchronized void recompute() { VersionedType<T> freshVersion = supplier.get(); if (!Objects.equals(freshVersion.version(), lastSuppliedVersion) || lastComputedTime + maxTimeBetweenRecomputes < clock.getTimeMillis()) { cached = function.apply(freshVersion.value()); lastSuppliedVersion = freshVersion.version(); } lastComputedTime = clock.getTimeMillis(); } }
@Override public R get() { if (!Objects.equals(supplier.get().version(), lastSuppliedVersion) || lastComputedTime + maxTimeBetweenRecomputes < clock.getTimeMillis()) { recompute(); } return cached; }
private synchronized void recompute() { VersionedType<T> freshVersion = supplier.get(); if (!Objects.equals(freshVersion.version(), lastSuppliedVersion) || lastComputedTime + maxTimeBetweenRecomputes < clock.getTimeMillis()) { cached = function.apply(freshVersion.value()); lastSuppliedVersion = freshVersion.version(); } lastComputedTime = clock.getTimeMillis(); } }
@Override public R get() { if (!Objects.equals(supplier.get().version(), lastSuppliedVersion) || lastComputedTime + maxTimeBetweenRecomputes < clock.getTimeMillis()) { recompute(); } return cached; }