我正在开发一款具有P2P架构的多人纸牌游戏,这不是我的决定,该项目是由我所在大学的分布式系统课程教授委托完成的。
教授施加的另一个约束是使用Java RMI技术来实现玩家之间的通信层。
我知道Java RMI是否"开箱即用"地管理并发,换句话说,我知道当我在远程对象上调用一个方法时,该对象是否会自动"锁定",并且没有对象可以同时调用同一方法。
将方法声明为synchronized是一个好的解决方案吗?
感谢
在远程对象上调用方法不会锁定对象。
声明要同步的方法是控制访问的一种方法。然而,简单地声明所有远程可访问对象上的所有方法进行同步是个坏主意。事实上,根据您正在做的事情的细节,它可能会产生不必要的并发瓶颈和/或死锁风险。您需要更加仔细地考虑对象的行为和交互。
同步您的方法是一个良好的开端。这样做会对性能造成惩罚,但在您的情况下,这是完全可以的。
看看这个Java RMI和同步方法