java - 为什么使用 RMI 时 JVM 不终止

标签 java multithreading rmi

我刚刚在 http://java.sun.com/docs/books/tutorial/rmi/implementing.html 阅读了来自 sun 的关于 RMI 的 Trail

当我运行该示例时,尽管 main 已完成,但 JVM 并未终止。 RMI 是否在内部某处生成线程?

在 main 退出后,在 main 中生成的多个线程的行为是什么? 这是一种让线程随时退出的干净方法,还是应该对生成的每个线程进行连接?我没有找到关于这个问题的任何文档。

非常感谢您的帮助!!

public class ComputeEngine implements Compute {

    public ComputeEngine() {
        super();
    }

    public <T> T executeTask(Task<T> t) {
        return t.execute();
    }


    public static void main(String[] args) {
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }
        try {
            String name = "Compute";
            Compute engine = new ComputeEngine();
            Compute stub = (Compute) UnicastRemoteObject.exportObject(engine, 0);
            Registry registry = LocateRegistry.getRegistry();
            registry.rebind(name, stub);
            System.out.println("ComputeEngine bound");
        } catch (Exception e) {
            System.err.println("ComputeEngine exception:");
            e.printStackTrace();
        }
    }
}

最佳答案

创建一个线程来监听套接字并回复对对象的请求。停止 JVM 的一种方法是解除服务器绑定(bind):

Registry.unbind() 

并取消导出对象:

UnicastRemoteObject.unexportObject()). 

关于java - 为什么使用 RMI 时 JVM 不终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078487/

相关文章:

java - 运行spring应用程序时PropertyAccessorFactory NoClassDefFoundError

java - 哈希表的线程安全

python - 在 python 中杀死标准输出中断 get_line_buffer()

java - 帮助解决 java rmi 作业中的问题

java - RMI 服务器使用错误的 IP 地址

java - "this"将其作为参数传递给 RMI 时引用发生变化

java - 逐帧动画未运行

java - 根据指定的条件执行 while 循环退出

perl 多任务问题

java - 如何在Java中使用内联类中断线程