javarmi:并发支持

javarmi:并发支持,java,concurrency,jakarta-ee,rmi,concurrent-programming,Java,Concurrency,Jakarta Ee,Rmi,Concurrent Programming,我正在开发一款具有P2P架构的多人纸牌游戏,这不是我的决定,该项目已由我所在大学的分布式系统课程教授委托 教授施加的另一个限制是使用JavaRMI技术来实现玩家之间的通信层 我会知道JavaRMI是否“开箱即用”地管理并发性,换句话说,我会知道当我在远程对象上调用一个方法时,该对象是否自动“锁定”,并且没有对象可以同时调用同一个方法 将方法声明为synchronized是一个好的解决方案吗 谢谢同步您的方法是一个好的开始。这样做会导致性能损失,但在您的情况下,这是完全可以接受的 看看这个同步您的

我正在开发一款具有P2P架构的多人纸牌游戏,这不是我的决定,该项目已由我所在大学的分布式系统课程教授委托

教授施加的另一个限制是使用JavaRMI技术来实现玩家之间的通信层

我会知道JavaRMI是否“开箱即用”地管理并发性,换句话说,我会知道当我在远程对象上调用一个方法时,该对象是否自动“锁定”,并且没有对象可以同时调用同一个方法

将方法声明为synchronized是一个好的解决方案吗


谢谢

同步您的方法是一个好的开始。这样做会导致性能损失,但在您的情况下,这是完全可以接受的


看看这个

同步您的方法是一个好的开始。这样做会导致性能损失,但在您的情况下,这是完全可以接受的


看看这个

在远程对象上调用方法不会锁定对象


声明要同步的方法是控制访问的一种方法。然而,简单地声明所有远程可访问对象上的所有方法以进行同步是一个坏主意。事实上,根据您所做工作的细节,它可能会造成不必要的并发瓶颈和/或冲突风险。您需要更仔细地考虑对象的行为和交互。

在远程对象上调用方法不会锁定对象


声明要同步的方法是控制访问的一种方法。然而,简单地声明所有远程可访问对象上的所有方法以进行同步是一个坏主意。事实上,根据您所做工作的细节,它可能会造成不必要的并发瓶颈和/或冲突风险。您需要更仔细地考虑对象的行为和交互。

取决于RMI提供程序。。。但默认情况下是多线程的,因此可以同时调用同一个方法。话虽如此,我认为盲目地在方法上同步是愚蠢的——需要保护的是对象及其使用。我断言,没有RMI提供程序是单线程的。RMI规范基本上说,您不能假设它是单线程的,所以您必须自己处理同步。我还断言,实际上没有RMI提供程序,RMI没有SPI体系结构:只有整个JDK的实现。。。但默认情况下是多线程的,因此可以同时调用同一个方法。话虽如此,我认为盲目地在方法上同步是愚蠢的——需要保护的是对象及其使用。我断言,没有RMI提供程序是单线程的。RMI规范基本上说,您不能假设它是单线程的,所以您必须自己处理同步。我还断言,实际上没有RMI提供者,RMI没有SPI体系结构:只有整个JDK的实现。