blob: 2ca443e64465483112547c87995c376db34025d8 [file] [log] [blame]
package scheduler;
import cheat.Cheat;
import database.Database1;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* 定时任务服务,负责定期执行各种维护任务
*/
public class SchedulerService {
private static final Logger logger = LoggerFactory.getLogger(SchedulerService.class);
private final ScheduledExecutorService scheduler;
private final Cheat cheat;
private final Database1 database1;
public SchedulerService() {
this.scheduler = Executors.newScheduledThreadPool(2);
this.cheat = new Cheat();
this.database1 = new Database1();
logger.info("SchedulerService 初始化完成");
}
/**
* 启动所有定时任务
*/
public void start() {
// 每分钟执行一次 PunishUser 函数
scheduler.scheduleAtFixedRate(
this::executePunishUser,
0, // 初始延迟1分钟
1, // 每1分钟执行一次
TimeUnit.MINUTES
);
logger.info("定时任务已启动 - PunishUser 任务将每分钟执行一次");
}
/**
* 执行用户惩罚任务
*/
private void executePunishUser() {
try {
logger.info("开始执行 PunishUser 定时任务");
cheat.PunishUser();
database1.SettleBeg();
logger.info("PunishUser 定时任务执行完成");
} catch (Exception e) {
logger.error("执行 PunishUser 定时任务时发生错误: {}", e.getMessage(), e);
}
}
/**
* 停止所有定时任务
*/
public void stop() {
if (scheduler != null && !scheduler.isShutdown()) {
scheduler.shutdown();
try {
if (!scheduler.awaitTermination(10, TimeUnit.SECONDS)) {
scheduler.shutdownNow();
}
logger.info("定时任务服务已停止");
} catch (InterruptedException e) {
scheduler.shutdownNow();
Thread.currentThread().interrupt();
logger.warn("停止定时任务服务时被中断");
}
}
}
}