/** 是否还有战斗未结束 */ public static boolean hasWarNotEnd(long roleId) { WarBean wb = getWarByRole(roleId); if(wb == null) { WarEndListenerBase listener = getCacheWarEndListener(roleId); if (listener == null) { return false; } } else { long gapTime = System.currentTimeMillis()-wb.getWarBeginTime(); // 结束掉超过两个小时的战斗 if(gapTime >= 3600*1000*2) { //代码注释掉,导致死循环 try { warEnd(roleId, -1, new WarEndInfoBean(false), true); } catch (Exception e) { e.printStackTrace(); logger.error("自动结束玩家["+roleId+"]上一场战斗发生错误,因为战斗时间超过2小时!", e); } return false; } } return true; }
该段代码喜欢在判断战斗是否结束的情况下,把超过2小时的战斗偷偷的结束,在用户登录,需要判断用户是否在战斗中的代码还是在引用是否这个方法,导致出现了死循环 。这个方法在方法命名上只判断是否结束,而不应该做操作,方法的命名和方法的实现应该尽量的遵循统一的规则,不然很容易造成歧义而写出类似的代码
at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087) at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087) at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087) at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087) at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087) at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087) at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087) at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98) at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734) at com.game.business.manager.WarManager.warEnd(WarManager.java:848) at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
相关推荐
阿昔洛韦联合特定电磁波治疗仪治疗带状疱疹疗效观察.pdf
电针、拔罐配合特定电磁波谱治疗仪治疗落枕64例.pdf
中医疗法联合特定电磁波谱照射治疗原发性痛经35例.pdf
CMMI特定目标和特定实践汇总 CMMI特定目标和特定实践汇总
特定电磁波治疗仪(TDP)操作说明及注意事项.pdf
特定权限设置未将com服务器应用程序解决方法,特定权限设置未将com服务器应用程序解决方法
特定针法治疗前列腺增生引起的排尿困难技术.ppt
特定电磁波治疗老年带状疱疹疗效观察.pdf
在 SAP 标准布局中,想要默认用户特定布局是勾选的,缺省布局是不勾选的。
特定电磁波治疗慢性盆腔炎的治疗效果观察.pdf
特定电磁波治疗带状疱疹86例疗效观察.pdf
特定电磁波谱治疗仪的故障维修与维护.pdf
特定电磁波谱治疗器治疗奶牛产后感染.pdf
基于SpringBoot框架的maven依赖包,能够对特定方法、特定IP的请求进行限制与拦截
《领域特定语言》是dsl领域的丰碑之作,由世界级软件开发大师和软件开发“教父”martin fowler历时多年写作而成,thoughtworks中国翻译。全面详尽地讲解了各种dsl及其构造方式,揭示了与编程语言无关的通用原则和...
特定电磁波治疗慢性盆腔炎的治疗效果观察 (1).pdf
通达信指标,实现了和麟龙软件特定均线组一样的功能,要求通达信的指标管理器版本是4.17版本
1110:查找特定的值 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 26970 通过数: 13296 【题目描述】 在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。 【输入】 第一行包含一个正整数n,...
特定电磁波治疗器治疗疼痛症255例.pdf
特定电磁波治疗褥疮的疗效观察.pdf