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){
User user = getUser();
if("hotfix".equals(args[2])){
LOGGER.info("hotfix user={},thread={}",user.getId(),Thread.currentThread().getName());
MongoUtil.getLjsdMongoTemplate().save(user);
}
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 java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class InnerMessageUtil {
@ -20,18 +22,45 @@ public class InnerMessageUtil {
/**
* 线 /s
*/
public static void broadcastWithRandom(AyyncWorker ayyncWorker, List<Integer> sendId, int timeBound) {
for (Integer id : sendId) {
ThreadManager.getScheduledExecutor().schedule(() -> {
public static void broadcastWithRandom(AyyncWorker ayyncWorker, List<Integer> sendId, int timeBound) throws InterruptedException {
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(new Runnable() {
@Override
public void run() {
try {
ayyncWorker.setTask(true);
ayyncWorker.setUser(UserManager.getUser(id));
ProtocolsManager instance = ProtocolsManager.getInstance();
HandlerLogicThread handlerThread = instance.handlerThreads[id % instance.HANDLER_THREAD_NUM];
handlerThread.addAyyncWorker(ayyncWorker);
}catch (Exception e){}
}, MathUtils.randomInt(timeBound), TimeUnit.SECONDS);
}
int lastUid=0;
for (Integer id : sendId) {
User userInMem = UserManager.getUserInMem(id);
if(userInMem == null){
continue;
}
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();
}
}
});
}
}