Add callback executor

This commit is contained in:
Xujiayao 2026-03-18 01:34:41 +08:00
parent 271734b780
commit ed61e30a76

View file

@ -73,6 +73,7 @@ public class DiscordManager {
// Blocks until JDA is ready // Blocks until JDA is ready
CompletableFuture<Void> readyFuture = CompletableFuture.runAsync(() -> { CompletableFuture<Void> readyFuture = CompletableFuture.runAsync(() -> {
ExecutorService eventExecutor = Executors.newSingleThreadExecutor(ExecutorServiceUtils.newThreadFactory("DMCC-DiscordEvent")); ExecutorService eventExecutor = Executors.newSingleThreadExecutor(ExecutorServiceUtils.newThreadFactory("DMCC-DiscordEvent"));
ExecutorService callbackExecutor = Executors.newCachedThreadPool(ExecutorServiceUtils.newThreadFactory("DMCC-DiscordCallback"));
try { try {
jda = JDABuilder.createDefault(token) jda = JDABuilder.createDefault(token)
.enableIntents( .enableIntents(
@ -82,6 +83,7 @@ public class DiscordManager {
) )
.setMemberCachePolicy(MemberCachePolicy.ALL) .setMemberCachePolicy(MemberCachePolicy.ALL)
.setEventPool(eventExecutor, true) .setEventPool(eventExecutor, true)
.setCallbackPool(callbackExecutor, true)
.addEventListeners(new DiscordEventHandler()) .addEventListeners(new DiscordEventHandler())
.build(); .build();
@ -89,8 +91,9 @@ public class DiscordManager {
} catch (InterruptedException e) { } catch (InterruptedException e) {
LOGGER.error(I18nManager.getDmccTranslation("discord.manager.init_interrupted"), e); LOGGER.error(I18nManager.getDmccTranslation("discord.manager.init_interrupted"), e);
} catch (RuntimeException e) { } catch (RuntimeException e) {
// If build() fails before JDA takes ownership of the event executor, shut it down to avoid leaks // If build() fails before JDA takes ownership of executors, shut them down to avoid leaks
eventExecutor.shutdownNow(); eventExecutor.shutdownNow();
callbackExecutor.shutdownNow();
throw e; throw e;
} }
}, executor); }, executor);