perf: 优化代码

This commit is contained in:
2023-08-20 22:46:52 +08:00
parent ee2e653222
commit 7ad1e7275c
8 changed files with 143 additions and 99 deletions

View File

@@ -1,7 +1,7 @@
package cn.hamster3.mc.plugin.core.bungee;
import cn.hamster3.mc.plugin.core.bungee.api.CoreBungeeAPI;
import cn.hamster3.mc.plugin.core.common.util.CoreUtils;
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
import net.md_5.bungee.api.plugin.Plugin;
@@ -45,10 +45,10 @@ public class HamsterCorePlugin extends Plugin {
logger.info("仓鼠核心正在关闭...");
CoreBungeeAPI.getInstance().getDataSource().close();
logger.info("已关闭数据库连接池.");
CoreUtils.WORKER_EXECUTOR.shutdownNow();
logger.info("暂停 WORKER_EXECUTOR.");
CoreUtils.SCHEDULED_EXECUTOR.shutdownNow();
logger.info("暂停 SCHEDULED_EXECUTOR.");
CoreAPI.getInstance().getExecutorService().shutdownNow();
logger.info("关闭线程池.");
CoreAPI.getInstance().getScheduledExecutorService().shutdownNow();
logger.info("关闭调度器.");
long time = System.currentTimeMillis() - start;
logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms.");
}

View File

@@ -3,15 +3,30 @@ package cn.hamster3.mc.plugin.core.bungee.api;
import cn.hamster3.mc.plugin.core.bungee.HamsterCorePlugin;
import cn.hamster3.mc.plugin.core.bungee.util.CoreBungeeCordUtils;
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
import cn.hamster3.mc.plugin.core.common.thread.NamedThreadFactory;
import cn.hamster3.mc.plugin.core.common.util.serializer.ComponentTypeAdapter;
import cn.hamster3.mc.plugin.core.common.util.serializer.MessageTypeAdapter;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import net.kyori.adventure.platform.AudienceProvider;
import net.kyori.adventure.text.Component;
import net.md_5.bungee.config.Configuration;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@SuppressWarnings("unused")
public final class CoreBungeeAPI extends CoreAPI {
private final Gson gson;
private final Gson humanGson;
private final HikariDataSource datasource;
private final ExecutorService executorService;
private final ScheduledExecutorService scheduledExecutorService;
private CoreBungeeAPI() {
HamsterCorePlugin plugin = HamsterCorePlugin.getInstance();
@@ -38,6 +53,20 @@ public final class CoreBungeeAPI extends CoreAPI {
hikariConfig.setValidationTimeout(datasourceConfig.getLong("validation-timeout", 5000));
hikariConfig.setPoolName("HamsterCore-Pool");
datasource = new HikariDataSource(hikariConfig);
gson = new GsonBuilder()
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.create();
humanGson = new GsonBuilder()
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.serializeNulls()
.setPrettyPrinting()
.create();
executorService = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor"));
scheduledExecutorService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler"));
}
public static CoreBungeeAPI getInstance() {
@@ -60,4 +89,24 @@ public final class CoreBungeeAPI extends CoreAPI {
public @NotNull HikariDataSource getDataSource() {
return datasource;
}
@Override
public Gson getGson() {
return gson;
}
@Override
public Gson getHumanGson() {
return humanGson;
}
@Override
public ExecutorService getExecutorService() {
return executorService;
}
@Override
public ScheduledExecutorService getScheduledExecutorService() {
return scheduledExecutorService;
}
}