|
| 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