日期:2014-05-20  浏览次数:20773 次

一个大厅n个房间,每个房间里的逻辑模型相同,但是有定时事件,如何实现这种模型?
我说的就是最常见的棋牌网游的模型,一个大厅,n个房间,每个房间就是一桌游戏,玩家自己选择房间进入游戏,我现在大厅实现了,房间实现了。但是解决接下里的一个问题时就犯难了。玩过棋牌类网游的都知道,这类游戏里轮到一个人操作时,是有时间限制的不会,不会等着一个人死等下去,一般就是十几秒,十几秒后你不操作就自动切给别人操作了。问题就在于这个玩意怎么实现,有人说简单啊,你不会用定时器吗?但是定时器就是上线程啊,那岂不是一个房间长期就会有一个线程待命。我以前见过一个棋牌游戏的源码,它就是一房间一线程,不过它更过分,它的线程从房间对象new出来后一直存在,循环运行逻辑,导致资源消耗很高,一台4G内存左右的服务器就只能跑100个左右的房间。所以我自己实现一直希望不要搞多线程,但是现在绕来绕去发现这种一个大厅——多个房间的模型,且存在需要时间控制的需求,不上线程几乎无解啊。各位高手有好办法吗
------解决方案--------------------
我的想法计划任务啊,要做的就是 提交/执行/取消 计划任务,当然这些计划任务要统一管理。
比如Java库中的ScheduledThreadPoolExecutor,或者第三方库如Quartz