两种方案:
方案一(这是我们服务器目前使用的方法):
使用netty,mina派发给一个线程执行器,让所有玩家消息单线程环境下执行,那么每个玩家的消息就能保证顺序性了。每个玩家在netty或者mina中都是一个会话,会话里面的消息是可以保证顺序执行的。然后再添加到主线程绑定的消息队列,同时唤醒主线程。主线程会取出队列里面的消息执行。
方案二:
netty,mina根据玩家roleId从消息执行器里面取一个并将消息添加进去(线程执行器包含一个消息队列)并唤醒改线程执行队列里的消息,其实更方案一差不多。