back_recharge
wangyuan 2019-09-18 20:41:32 +08:00
parent e5578dbab3
commit 63a587862c
2 changed files with 41 additions and 12 deletions

View File

@ -30,7 +30,7 @@ public class Cmd_changename extends GmRoleAbstract {
if(args.length>=2){ if(args.length>=2){
User user = getUser(); User user = getUser();
if("hotfix".equals(args[2])){ if("hotfix".equals(args[2])){
LOGGER.info("hotfix user={},thread={}",user.getId(),Thread.currentThread().getName());
MongoUtil.getLjsdMongoTemplate().save(user); MongoUtil.getLjsdMongoTemplate().save(user);
} }
if("force".equals(args[2])){ if("force".equals(args[2])){

View File

@ -7,6 +7,8 @@ import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.thread.ThreadManager; import com.ljsd.jieling.thread.ThreadManager;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public class InnerMessageUtil { public class InnerMessageUtil {
@ -20,18 +22,45 @@ public class InnerMessageUtil {
/** /**
* 线 /s * 线 /s
*/ */
public static void broadcastWithRandom(AyyncWorker ayyncWorker, List<Integer> sendId, int timeBound) { public static void broadcastWithRandom(AyyncWorker ayyncWorker, List<Integer> sendId, int timeBound) throws InterruptedException {
for (Integer id : sendId) {
ThreadManager.getScheduledExecutor().schedule(() -> { ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(new Runnable() {
@Override
public void run() {
try { try {
ayyncWorker.setTask(true); int lastUid=0;
ayyncWorker.setUser(UserManager.getUser(id)); for (Integer id : sendId) {
ProtocolsManager instance = ProtocolsManager.getInstance(); User userInMem = UserManager.getUserInMem(id);
HandlerLogicThread handlerThread = instance.handlerThreads[id % instance.HANDLER_THREAD_NUM]; if(userInMem == null){
handlerThread.addAyyncWorker(ayyncWorker); continue;
}catch (Exception e){} }
}, MathUtils.randomInt(timeBound), TimeUnit.SECONDS); ProtocolsManager instance = ProtocolsManager.getInstance();
} if(lastUid!=0){
HandlerLogicThread handlerThread = instance.handlerThreads[lastUid % instance.HANDLER_THREAD_NUM];
int retryTimes = 30;
while ( !handlerThread.ayyncWorkerConcurrentLinkedQueue.isEmpty()){
Thread.sleep(50);
retryTimes--;
if(retryTimes<0){
System.out.println("fail fail ---------------------->>>>>fail..");
return;
}
}
Thread.sleep(50);
}
HandlerLogicThread handlerThread = instance.handlerThreads[id % instance.HANDLER_THREAD_NUM];
ayyncWorker.setTask(true);
ayyncWorker.setUser(userInMem);
handlerThread.addAyyncWorker(ayyncWorker);
lastUid =id;
}
}catch (Exception e){
e.printStackTrace();
}
}
});
} }
} }