Update SingleThreadExecutorUtils.java

Trying to apply virtual threading properties to singlethreadexecutor
This commit is contained in:
XMRZombie 2025-04-29 00:56:01 +00:00 committed by GitHub
parent 03d32f4a7c
commit e16e2ebd03
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -19,14 +19,13 @@ package haveno.common.util;
import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadFactory;
/** /**
* Utility class for creating single-threaded executors. * Utility class for creating single-threaded executors with virtual threading properties.
*/ */
public class SingleThreadExecutorUtils { public class SingleThreadExecutorUtils {
@ -41,17 +40,17 @@ public class SingleThreadExecutorUtils {
public static ExecutorService getNonDaemonSingleThreadExecutor(Class<?> aClass) { public static ExecutorService getNonDaemonSingleThreadExecutor(Class<?> aClass) {
validateClass(aClass); validateClass(aClass);
return getSingleThreadExecutor(aClass.getSimpleName(), false); return getSingleThreadExecutor(aClass.getSimpleName());
} }
public static ExecutorService getSingleThreadExecutor(String name) { public static ExecutorService getSingleThreadExecutor(String name) {
validateName(name); validateName(name);
return getSingleThreadExecutor(name, true); return createSingleThreadExecutor(name);
} }
public static ListeningExecutorService getSingleThreadListeningExecutor(String name) { public static ListeningExecutorService getSingleThreadListeningExecutor(String name) {
validateName(name); validateName(name);
return MoreExecutors.listeningDecorator(getSingleThreadExecutor(name)); return MoreExecutors.listeningDecorator(createSingleThreadExecutor(name));
} }
public static ExecutorService getSingleThreadExecutor(ThreadFactory threadFactory) { public static ExecutorService getSingleThreadExecutor(ThreadFactory threadFactory) {
@ -59,16 +58,16 @@ public class SingleThreadExecutorUtils {
return Executors.newSingleThreadExecutor(threadFactory); return Executors.newSingleThreadExecutor(threadFactory);
} }
private static ExecutorService getSingleThreadExecutor(String name, boolean isDaemonThread) { private static ExecutorService createSingleThreadExecutor(String name) {
ThreadFactory threadFactory = getThreadFactory(name, isDaemonThread); ThreadFactory threadFactory = getThreadFactory(name);
return Executors.newSingleThreadExecutor(threadFactory); return Executors.newSingleThreadExecutor(threadFactory);
} }
private static ThreadFactory getThreadFactory(String name, boolean isDaemonThread) { private static ThreadFactory getThreadFactory(String name) {
return new ThreadFactoryBuilder() // Virtual threads do not support the daemon property, so we omit it.
.setNameFormat(name + "-%d") return Thread.ofVirtual()
.setDaemon(isDaemonThread) .name(name + "-%d")
.build(); .factory();
} }
private static void validateClass(Class<?> aClass) { private static void validateClass(Class<?> aClass) {