From a3129bc834bf22b89f7ac545a960b89361b03459 Mon Sep 17 00:00:00 2001 From: Luck Date: Sat, 27 Mar 2021 18:51:20 +0000 Subject: Execute commands async --- .../me/lucko/spark/common/sampler/ThreadDumper.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'spark-common/src/main/java/me/lucko/spark/common/sampler') diff --git a/spark-common/src/main/java/me/lucko/spark/common/sampler/ThreadDumper.java b/spark-common/src/main/java/me/lucko/spark/common/sampler/ThreadDumper.java index 4863482..e99114a 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/sampler/ThreadDumper.java +++ b/spark-common/src/main/java/me/lucko/spark/common/sampler/ThreadDumper.java @@ -31,6 +31,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.Supplier; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import java.util.stream.Collectors; @@ -71,6 +72,25 @@ public interface ThreadDumper { } }; + /** + * Utility to cache the creation of a {@link ThreadDumper} targeting + * the game (server/client) thread. + */ + final class GameThread implements Supplier { + private Specific dumper = null; + + @Override + public ThreadDumper get() { + return Objects.requireNonNull(this.dumper, "dumper"); + } + + public void ensureSetup() { + if (this.dumper == null) { + this.dumper = new Specific(new long[]{Thread.currentThread().getId()}); + } + } + } + /** * Implementation of {@link ThreadDumper} that generates data for a specific set of threads. */ -- cgit