refactor: 优化代码

This commit is contained in:
2023-10-29 16:40:51 +08:00
parent dc39dfa827
commit 58365c2424
7 changed files with 33 additions and 56 deletions

View File

@@ -78,7 +78,7 @@ public class HamsterCorePlugin extends JavaPlugin {
logger.info("已关闭数据库连接池."); logger.info("已关闭数据库连接池.");
CoreAPI.getInstance().getExecutorService().shutdownNow(); CoreAPI.getInstance().getExecutorService().shutdownNow();
logger.info("已关闭线程池."); logger.info("已关闭线程池.");
CoreAPI.getInstance().getScheduledExecutorService().shutdownNow(); CoreAPI.getInstance().getScheduledService().shutdownNow();
logger.info("已关闭调度器."); logger.info("已关闭调度器.");
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
InventoryView view = player.getOpenInventory(); InventoryView view = player.getOpenInventory();

View File

@@ -5,7 +5,6 @@ import cn.hamster3.mc.plugin.core.bukkit.util.serializer.ItemStackAdapter;
import cn.hamster3.mc.plugin.core.bukkit.util.serializer.PotionEffectAdapter; import cn.hamster3.mc.plugin.core.bukkit.util.serializer.PotionEffectAdapter;
import cn.hamster3.mc.plugin.core.common.api.CoreAPI; 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.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.ComponentTypeAdapter;
import cn.hamster3.mc.plugin.core.common.util.serializer.MessageTypeAdapter; import cn.hamster3.mc.plugin.core.common.util.serializer.MessageTypeAdapter;
import com.google.gson.Gson; import com.google.gson.Gson;
@@ -20,17 +19,11 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public final class CoreBukkitAPI extends CoreAPI { public final class CoreBukkitAPI extends CoreAPI {
private final Gson gson; private final Gson gson;
private final Gson humanGson; private final Gson humanGson;
private final HikariDataSource datasource; private final HikariDataSource datasource;
private final ExecutorService executorService;
private final ScheduledExecutorService scheduledExecutorService;
private CoreBukkitAPI() { private CoreBukkitAPI() {
HamsterCorePlugin plugin = HamsterCorePlugin.getInstance(); HamsterCorePlugin plugin = HamsterCorePlugin.getInstance();
@@ -72,9 +65,6 @@ public final class CoreBukkitAPI extends CoreAPI {
.serializeNulls() .serializeNulls()
.setPrettyPrinting() .setPrettyPrinting()
.create(); .create();
executorService = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor"));
scheduledExecutorService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler"));
} }
public static CoreBukkitAPI getInstance() { public static CoreBukkitAPI getInstance() {
@@ -107,14 +97,4 @@ public final class CoreBukkitAPI extends CoreAPI {
public @NotNull Gson getHumanGson() { public @NotNull Gson getHumanGson() {
return humanGson; return humanGson;
} }
@Override
public @NotNull ExecutorService getExecutorService() {
return executorService;
}
@Override
public @NotNull ScheduledExecutorService getScheduledExecutorService() {
return scheduledExecutorService;
}
} }

View File

@@ -47,7 +47,7 @@ public class HamsterCorePlugin extends Plugin {
logger.info("已关闭数据库连接池."); logger.info("已关闭数据库连接池.");
CoreAPI.getInstance().getExecutorService().shutdownNow(); CoreAPI.getInstance().getExecutorService().shutdownNow();
logger.info("已关闭线程池."); logger.info("已关闭线程池.");
CoreAPI.getInstance().getScheduledExecutorService().shutdownNow(); CoreAPI.getInstance().getScheduledService().shutdownNow();
logger.info("已关闭调度器."); logger.info("已关闭调度器.");
long time = System.currentTimeMillis() - start; long time = System.currentTimeMillis() - start;
logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms."); logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms.");

View File

@@ -4,7 +4,6 @@ import cn.hamster3.mc.plugin.core.bungee.HamsterCorePlugin;
import cn.hamster3.mc.plugin.core.bungee.util.CoreBungeeCordUtils; 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.api.CoreAPI;
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage; 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.ComponentTypeAdapter;
import cn.hamster3.mc.plugin.core.common.util.serializer.MessageTypeAdapter; import cn.hamster3.mc.plugin.core.common.util.serializer.MessageTypeAdapter;
import com.google.gson.Gson; import com.google.gson.Gson;
@@ -16,17 +15,11 @@ import net.kyori.adventure.text.Component;
import net.md_5.bungee.config.Configuration; import net.md_5.bungee.config.Configuration;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public final class CoreBungeeAPI extends CoreAPI { public final class CoreBungeeAPI extends CoreAPI {
private final Gson gson; private final Gson gson;
private final Gson humanGson; private final Gson humanGson;
private final HikariDataSource datasource; private final HikariDataSource datasource;
private final ExecutorService executorService;
private final ScheduledExecutorService scheduledExecutorService;
private CoreBungeeAPI() { private CoreBungeeAPI() {
HamsterCorePlugin plugin = HamsterCorePlugin.getInstance(); HamsterCorePlugin plugin = HamsterCorePlugin.getInstance();
@@ -64,9 +57,6 @@ public final class CoreBungeeAPI extends CoreAPI {
.serializeNulls() .serializeNulls()
.setPrettyPrinting() .setPrettyPrinting()
.create(); .create();
executorService = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor"));
scheduledExecutorService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler"));
} }
public static CoreBungeeAPI getInstance() { public static CoreBungeeAPI getInstance() {
@@ -99,14 +89,4 @@ public final class CoreBungeeAPI extends CoreAPI {
public @NotNull Gson getHumanGson() { public @NotNull Gson getHumanGson() {
return humanGson; return humanGson;
} }
@Override
public @NotNull ExecutorService getExecutorService() {
return executorService;
}
@Override
public @NotNull ScheduledExecutorService getScheduledExecutorService() {
return scheduledExecutorService;
}
} }

View File

@@ -1,5 +1,6 @@
package cn.hamster3.mc.plugin.core.common.api; package cn.hamster3.mc.plugin.core.common.api;
import cn.hamster3.mc.plugin.core.common.thread.NamedThreadFactory;
import com.google.gson.Gson; import com.google.gson.Gson;
import lombok.Getter; import lombok.Getter;
import net.kyori.adventure.platform.AudienceProvider; import net.kyori.adventure.platform.AudienceProvider;
@@ -9,19 +10,46 @@ import javax.sql.DataSource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public abstract class CoreAPI { public abstract class CoreAPI {
@Getter @Getter
protected static CoreAPI instance; protected static CoreAPI instance;
/**
* 异步线程池
*/
@Getter
private final ExecutorService executorService;
/**
* 调度器线程池
*/
@Getter
private final ScheduledExecutorService scheduledService;
public CoreAPI() {
executorService = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor"));
scheduledService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler"));
}
@NotNull @NotNull
public abstract AudienceProvider getAudienceProvider(); public abstract AudienceProvider getAudienceProvider();
/**
* 获取 HamsterCore 公用数据库连接池
*
* @return 公用数据库连接池
*/
@NotNull @NotNull
public abstract DataSource getDataSource(); public abstract DataSource getDataSource();
/**
* 获取 HamsterCore 公用数据库连接
*
* @return 公用数据库连接
* @throws SQLException -
*/
@NotNull @NotNull
public Connection getConnection() throws SQLException { public Connection getConnection() throws SQLException {
return getDataSource().getConnection(); return getDataSource().getConnection();
@@ -39,15 +67,4 @@ public abstract class CoreAPI {
@NotNull @NotNull
public abstract Gson getHumanGson(); public abstract Gson getHumanGson();
/**
* @return 异步线程池
*/
@NotNull
public abstract ExecutorService getExecutorService();
/**
* @return 调度器线程池
*/
@NotNull
public abstract ScheduledExecutorService getScheduledExecutorService();
} }

View File

@@ -23,7 +23,7 @@ public abstract class CountdownThread implements Runnable {
} }
public void start(long initialDelay) { public void start(long initialDelay) {
future = CoreAPI.getInstance().getScheduledExecutorService() future = CoreAPI.getInstance().getScheduledService()
.scheduleWithFixedDelay(this, initialDelay, interval, TimeUnit.MILLISECONDS); .scheduleWithFixedDelay(this, initialDelay, interval, TimeUnit.MILLISECONDS);
} }

View File

@@ -36,10 +36,10 @@ public final class CoreUtils {
@Deprecated @Deprecated
public static ExecutorService WORKER_EXECUTOR = CoreAPI.getInstance().getExecutorService(); public static ExecutorService WORKER_EXECUTOR = CoreAPI.getInstance().getExecutorService();
/** /**
* @deprecated 使用 {@link CoreAPI#getScheduledExecutorService()} * @deprecated 使用 {@link CoreAPI#getScheduledService()}
*/ */
@Deprecated @Deprecated
public static ScheduledExecutorService SCHEDULED_EXECUTOR = CoreAPI.getInstance().getScheduledExecutorService(); public static ScheduledExecutorService SCHEDULED_EXECUTOR = CoreAPI.getInstance().getScheduledService();
private CoreUtils() { private CoreUtils() {
} }