From a5f0bbe6b2f410f424ba27a1f2884d1d329758a4 Mon Sep 17 00:00:00 2001 From: melontini <104443436+melontini@users.noreply.github.com> Date: Tue, 16 Jul 2024 20:09:32 +0700 Subject: [PATCH] synchronize LinkedHashMap as it updates itself on get. --- .../dark_matter/api/base/util/functions/Memoize.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/dark-matter-base/src/main/java/me/melontini/dark_matter/api/base/util/functions/Memoize.java b/dark-matter-base/src/main/java/me/melontini/dark_matter/api/base/util/functions/Memoize.java index 8287084f..e2963b0c 100644 --- a/dark-matter-base/src/main/java/me/melontini/dark_matter/api/base/util/functions/Memoize.java +++ b/dark-matter-base/src/main/java/me/melontini/dark_matter/api/base/util/functions/Memoize.java @@ -1,9 +1,6 @@ package me.melontini.dark_matter.api.base.util.functions; -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.function.Supplier; @@ -52,12 +49,12 @@ public static Function identityFunction(Function delegate) { * Unlike previous functions, this one will evict unused entries when capacity is too high. */ public static Function lruFunction(Function delegate, int capacity) { - return cachedFunction(new LinkedHashMap<>(Math.min(16, capacity), 0.75f, true) { + return cachedFunction(Collections.synchronizedMap(new LinkedHashMap<>(capacity + 1, 0.75f, true) { @Override protected boolean removeEldestEntry(Map.Entry eldest) { return size() > capacity; } - }, delegate); + }), delegate); } public static Function cachedFunction(Map cache, Function delegate) {