有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中崩溃时的并发释放锁

我正在使用JavaRMI编写一个客户机-服务器应用程序。某些服务器端资源必须以互斥方式访问(我正为此使用锁)

现在我想知道当:

  1. 客户端调用服务器上的远程方法
  2. 远程方法获取关键部分的锁
  3. 客户端在远程方法退出临界区之前崩溃

是否释放与该客户端关联的远程方法调用获取的任何锁?或者其他客户机不可能在以后获得锁

谢谢你的回答


共 (1) 个答案

  1. # 1 楼答案

    发生的情况是,远程方法一直执行到完成为止,并在退出关键部分时释放锁。然后它尝试将结果(如果有)返回给客户端,但由于连接已断开而失败

    这里没有特别的危险

    当然,如果服务器使用的是Lock对象而不是原始锁/互斥锁,那么它需要在finally块中释放锁,以处理由于某些意外异常而失败的情况。但这是另一个问题。客户端崩溃不会触发这种情况