Skip to content

Commit 9585c44

Browse files
committed
Virtual thread for MCUtil
1 parent 6d28323 commit 9585c44

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: HaHaWTH <id_cn00@outlook.com>
3+
Date: Wed, 1 May 2024 06:04:21 +0800
4+
Subject: [PATCH] virtual-thread-for-MC-Util
5+
6+
7+
diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
8+
index 70a1dbdb31d44fcabce54fd1b78f29b1848dcd26..7854964c3dbde193cc5b8d2fe0cc8db02d570cee 100644
9+
--- a/src/main/java/net/minecraft/server/MCUtil.java
10+
+++ b/src/main/java/net/minecraft/server/MCUtil.java
11+
@@ -23,18 +23,17 @@ import java.util.function.Supplier;
12+
import java.util.regex.Pattern;
13+
14+
public final class MCUtil {
15+
- private static Executor asyncExecutor;
16+
+ private static Executor asyncExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("Paper Async Task Handler Thread - %1$d").build());
17+
18+
static {
19+
if (VirtualThreadService.getJavaMajorVersion() >= VirtualThreadService.minimumJavaMajorVersionWithoutFeaturePreview && BeastConfig.virtualThreadForAsyncExecutor) {
20+
try {
21+
- Method newThreadPerTaskExecutor = Executors.class.getMethod("newThreadPerTaskExecutor", ThreadFactory.class);
22+
- asyncExecutor = (Executor) newThreadPerTaskExecutor.invoke(null, VirtualThreadService.get().createFactory());
23+
+ asyncExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("Paper Async Task Handler Thread - %1$d").setThreadFactory(VirtualThreadService.get().createFactory()).build());
24+
} catch (Exception ignored) {
25+
System.err.println("Failed to create Virtual Thread executor! Fallback to default executor.");
26+
+ asyncExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("Paper Async Task Handler Thread - %1$d").build());
27+
}
28+
}
29+
- asyncExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("Paper Async Task Handler Thread - %1$d").build());
30+
}
31+
32+
private MCUtil() {}

0 commit comments

Comments
 (0)