diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/SimpleLruCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/SimpleLruCache.java index 709d9ee73..3fcfd21fc 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SimpleLruCache.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SimpleLruCache.java @@ -162,7 +162,7 @@ public SimpleLruCache(int maxSize, float purgeFactor) { public V get(Object key) { Entry entry = map.get(key); if (entry != null) { - entry.lastAccessed = ++time; + entry.lastAccessed = tick(); return entry.value; } return null; @@ -186,13 +186,18 @@ public V get(Object key) { * if the specified key or value is null */ public V put(@NonNull K key, @NonNull V value) { - map.put(key, new Entry<>(key, value, ++time)); + map.put(key, new Entry<>(key, value, tick())); if (map.size() > maximumSize) { purge(); } return value; } + @SuppressWarnings("NonAtomicVolatileUpdate") + private long tick() { + return ++time; + } + /** * Returns the current size of this cache *