跨服排行榜改为线程池独立运行,相关日志添加

grimm 2024-05-11 17:43:41 +08:00
parent 61b39fe7c3
commit 0a61397686
4 changed files with 13 additions and 17 deletions

View File

@ -77,10 +77,9 @@ public class UserManager {
*
*/
public static void checkOffline(){
Thread.currentThread().setName("user_cache_clean");
long now = TimeUtils.now();
LOGGER.info("玩家缓存清理开始,当前时间:{},当前线程名称:{}",TimeUtils.getTimeStamp2(now),Thread.currentThread().getName());
List<User> usersToRemove = new ArrayList<>();
try {
synchronized (userMap) { // 同步userMap以防止并发修改
for (User user : userMap.values()) {
@ -94,7 +93,6 @@ public class UserManager {
}
}
}
// 移除过期的用户
for (User user : usersToRemove) {
removeUser(user.getId());
@ -103,7 +101,7 @@ public class UserManager {
LOGGER.error("Exception in offline cleanup logic", e); // 记录完整的异常信息
}
LOGGER.info("checkOffline last_count={}, consumer_time:{}ms", getUserMapSize(), TimeUtils.now()-now);
LOGGER.info("玩家缓存清理开始 剩余数量={}, 消耗时间:{}ms", getUserMapSize(), TimeUtils.now()-now);
}
public static User userLogin(int uid,String openId,String channel,int pid,int gid,String platform,String ip,String channle_id,String bundle_id,String ccId,String pack_Id) throws Exception {

View File

@ -38,11 +38,13 @@ public class CrossRankManager {
/**
*
*/
public void crossRankHandle(){
public static void crossRankHandle(){
// 时间验证
if (!isTime()) {
return;
}
// if (!isTime()) {
// return;
// }
long now = TimeUtils.now();
LOGGER.info("跨服排行榜处理开始=========当前时间:{},当前线程名称:{}",TimeUtils.getTimeStamp2(now), Thread.currentThread().getName());
// 全部排行遍历
for (RankEnum value : RankEnum.values()) {
int type = value.getType();
@ -69,10 +71,11 @@ public class CrossRankManager {
// 批量放入跨服排行榜
RedisUtil.getInstence().zsetAddAall(key,range);
}
LOGGER.info("=====================跨服排行榜处理========,key:{}",key);
LOGGER.info("跨服排行榜处理========= redis键: {}",key);
}
}
}
LOGGER.info("跨服排行榜处理完成=========耗时:{}ms", TimeUtils.now() - now);
}
/**

View File

@ -3,6 +3,7 @@ package com.ljsd.jieling.thread;
import com.ljsd.IManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.rank.CrossRankManager;
import com.ljsd.jieling.thread.task.*;
import com.ljsd.jieling.util.ConfigurableApplicationContextManager;
import com.ljsd.jieling.util.TaskKit;
@ -123,6 +124,8 @@ public class ThreadManager implements IManager {
TaskKit.scheduleAtFixedRate(new ForceRankTask(), 60,5, TimeUnit.SECONDS);
// 每小时减容用户缓存
TaskKit.scheduleAtFixedRate(UserManager::checkOffline, 2, 1, TimeUnit.HOURS);
// 跨服排行榜 每俩小时运行一次
TaskKit.scheduleAtFixedRate(CrossRankManager::crossRankHandle, 60, 7200, TimeUnit.SECONDS);
// 定时重启线程池
scheduledFutureSets.add(scheduledExecutor.scheduleAtFixedRate(new Thread(() -> {
long lastMilis = System.currentTimeMillis();

View File

@ -27,7 +27,6 @@ import com.ljsd.jieling.logic.family.DeathPathLogic;
import com.ljsd.jieling.logic.family.GuildFightLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.question.QuestionLogic;
import com.ljsd.jieling.logic.rank.CrossRankManager;
import com.ljsd.jieling.logic.rank.RankLogic;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.StoreLogic;
@ -168,13 +167,6 @@ public class MinuteTask extends Thread {
// LOGGER.error("Exception::=>{}", e.toString());
// }
try {
CrossRankManager.getInstance().crossRankHandle();
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("跨服排行榜初始化异常Exception::=>{}", e.toString());
}
try {
every10IntMul();
} catch (Exception e) {