Merge remote-tracking branch 'origin/master'

This commit is contained in:
2022-11-03 13:07:43 +08:00

View File

@@ -6,7 +6,10 @@ import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.*; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public interface CoreConstantObjects { public interface CoreConstantObjects {
@@ -30,50 +33,48 @@ public interface CoreConstantObjects {
.serializeNulls() .serializeNulls()
.setPrettyPrinting() .setPrettyPrinting()
.create(); .create();
/**
* JSON 解析器
*/
JsonParser JSON_PARSER = new JsonParser();
/** /**
* 异步线程 * 异步线程
*/ */
ExecutorService WORKER_EXECUTOR = new ThreadPoolExecutor(1, Integer.MAX_VALUE, 60, TimeUnit.MINUTES, new SynchronousQueue<>(), new APIThreadFactory("HamsterCore - Executor")); ExecutorService WORKER_EXECUTOR = Executors.newCachedThreadPool(new NamedThreadFactory("HamsterCore - Executor"));
/** /**
* 调度器线程 * 调度器线程
*/ */
ScheduledExecutorService SCHEDULED_EXECUTOR = Executors.newScheduledThreadPool(1, new APIThreadFactory("HamsterCore - Scheduler")); ScheduledExecutorService SCHEDULED_EXECUTOR = Executors
.newScheduledThreadPool(1, new NamedThreadFactory("HamsterCore - Scheduler"));
class APIThreadFactory implements ThreadFactory { }
private final String name;
private int threadID;
public APIThreadFactory(String name) { class NamedThreadFactory implements ThreadFactory {
this.name = name; private final String name;
threadID = 0; private int threadID;
}
@Override public NamedThreadFactory(String name) {
public Thread newThread(@NotNull Runnable runnable) { this.name = name;
threadID++; threadID = 0;
return new Thread(runnable, name + "#" + threadID);
}
} }
class MessageTypeAdapter implements JsonSerializer<DisplayMessage>, JsonDeserializer<DisplayMessage> { @Override
public static final MessageTypeAdapter INSTANCE = new MessageTypeAdapter(); public Thread newThread(@NotNull Runnable runnable) {
threadID++;
private MessageTypeAdapter() { return new Thread(runnable, name + "#" + threadID);
} }
}
@Override
public DisplayMessage deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { class MessageTypeAdapter implements JsonSerializer<DisplayMessage>, JsonDeserializer<DisplayMessage> {
return new DisplayMessage().fromJson(json); public static final MessageTypeAdapter INSTANCE = new MessageTypeAdapter();
}
private MessageTypeAdapter() {
@Override }
public JsonElement serialize(DisplayMessage src, Type typeOfSrc, JsonSerializationContext context) {
return src.saveToJson(); @Override
} public DisplayMessage deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return new DisplayMessage().fromJson(json);
}
@Override
public JsonElement serialize(DisplayMessage src, Type typeOfSrc, JsonSerializationContext context) {
return src.saveToJson();
} }
} }