我正在使用 Java RMI。问题是,通过关闭一个线程或调用System.exit(0)
,我需要在 RMI 注册表中注册的对象执行一个unbind()
以删除与该对象的所有关联。当我们执行System.exit(0)
时,该对象已经在 RMI 注册表中注册。
我如何通过特别调用对象来做到System.exit(0)
这unbind()
一点?我曾考虑过System.exit()
覆盖,但显然这不是解决方案。
我正在使用 Java RMI。问题是,通过关闭一个线程或调用System.exit(0)
,我需要在 RMI 注册表中注册的对象执行一个unbind()
以删除与该对象的所有关联。当我们执行System.exit(0)
时,该对象已经在 RMI 注册表中注册。
我如何通过特别调用对象来做到System.exit(0)
这unbind()
一点?我曾考虑过System.exit()
覆盖,但显然这不是解决方案。
问题是,通过关闭一个线程或调用
System.exit(0)
,我需要在 RMI 注册表中注册的对象执行一个unbind()
以删除与该对象的所有关联。
就这样做吧。但是没有“关闭线程”这样的东西,即使退出线程也不需要你解绑任何东西。
当我们执行
System.exit(0)
时,该对象已经在 RMI 注册表中注册。
很好,所以unbind()
会成功。不知道她在说什么。您的意思是“仍然注册”吗?
我如何通过特别调用对象来做到
System.exit(0)
这unbind()
一点?
你不能。您必须在呼叫之前System.exit()
进行unbind()
呼叫。
我曾考虑过
System.exit()
覆盖,但显然这不是解决方案。
您不能覆盖静态方法,并且System
是最终的。
看起来你可能System.exit()
溅得一地,这已经是不好的做法了。
简单的答案是根本不调用,而是System.exit()
取消绑定和取消导出对象。然后 RMI 线程将退出,并且您的 JVM 将自行退出,只要您没有任何自己的非守护程序线程。