diff --git a/approvaltests-util/src/main/java/org/lambda/utils/Once.java b/approvaltests-util/src/main/java/org/lambda/utils/Once.java index da13bb81..a55621ea 100644 --- a/approvaltests-util/src/main/java/org/lambda/utils/Once.java +++ b/approvaltests-util/src/main/java/org/lambda/utils/Once.java @@ -1,5 +1,6 @@ package org.lambda.utils; +import com.spun.util.ThreadUtils; import org.lambda.actions.Action0; import org.lambda.functions.Function0; @@ -15,9 +16,17 @@ public class Once private static final Map functions = Collections.synchronizedMap(new HashMap<>()); public static void run(Action0 runnable) { - if (!actions.contains(runnable.getClass())) + run(runnable, runnable.getClass()); + } + public static void runAsync(Action0 runnable) + { + run(() -> ThreadUtils.launch(runnable), runnable.getClass()); + } + private static void run(Action0 runnable, Class identifier) + { + if (!actions.contains(identifier)) { - actions.add(runnable.getClass()); + actions.add(identifier); runnable.call(); } } @@ -25,12 +34,4 @@ public static T run(Function0 runnable) { return (T) functions.computeIfAbsent(runnable.getClass(), k -> runnable.call()); } - public static void runAsync(Action0 runnable) - { - if (!actions.contains(runnable.getClass())) - { - actions.add(runnable.getClass()); - new Thread(runnable::call).start(); - } - } }