我正在使用Java-RMI编写客户端 - 服务器应用程序。必须以互斥方式访问某些服务器端资源(我为此目的使用锁)。
现在我想知道在以下情况会发生什么:
是否会释放与该客户端关联的远程方法调用获取的任何锁定?或者其他客户之后是否无法获得锁定?
感谢您的回答
答案 0 :(得分:4)
远程方法在完成之前一直执行,并在退出临界区时释放锁。然后它尝试将结果(如果有的话)返回给客户端,并因连接断开而失败。
这里没有特别的危险......
当然,如果服务器使用Lock
个对象而不是原始锁/互斥锁,那么它需要在finally块中执行锁定释放,以处理由于某些意外异常导致失败的情况。但这是一个不同的问题。客户端崩溃不会触发该情况。