RMI线程分析
RMI线程分析
无知有趣 发表于3年前
RMI线程分析
  • 发表于 3年前
  • 阅读 139
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 在注册和调用远程对象时,通过JVM虚拟机的线程进行分析对比加强对RMI的认识。

1、LocateRegistry.createRegistry创建了一个守护线程和一个空线程组;

public static void main(String[] args) throws Throwable{
    Registry registry = LocateRegistry.createRegistry(8494);//左侧为添加了此行的控制台输出
    Thread.currentThread().getThreadGroup().getParent().list();
}

2、本地绑定对象,多了两个线程,其中Reaper线程为非守护线程,main线程结束时不至于退出虚拟机;

public static void main(String[] args) throws Throwable{
    Registry registry = LocateRegistry.createRegistry(8494);
    //左侧为添加了此行的控制台输出
    registry.bind(IRemoteA.RMI_NAME, UnicastRemoteObject.exportObject(new RemoteAB(), 8494)); 
    Thread.currentThread().getThreadGroup().getParent().list();
}


3、UnicastRemoteObject.exportObject使用与创建Registry时不一样的端口,多了一个Accept线程;

public static void main(String[] args) throws Throwable{
    Registry registry = LocateRegistry.createRegistry(8494);
    //左侧为修改了端口的控制台输出
    registry.bind(IRemoteA.RMI_NAME, UnicastRemoteObject.exportObject(new RemoteAB(), 0)); 
    Thread.currentThread().getThreadGroup().getParent().list();
}


4、客户端远程调用,与普通的main进行比较;

public static void main(String[] args) throws Throwable{
    System.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
            "com.sun.jndi.rmi.registry.RegistryContextFactory");
    System.setProperty(Context.PROVIDER_URL, "rmi://192.168.10.192:8494");
    InitialContext context = new InitialContext();
    IRemoteA ra = (IRemoteA)context.lookup(IRemoteA.RMI_NAME);
    System.out.println(ra.doA());
 
    Thread.currentThread().getThreadGroup().getParent().list();
}

5、远程绑定对象,与前面的本地绑定对象比较;

public static void main(String[] args) throws Throwable{
    Registry registry = LocateRegistry.createRegistry(8494);
    //registry.bind(IRemoteA.RMI_NAME, UnicastRemoteObject.exportObject(new RemoteAB(), 8494));
    
    LocateRegistry.getRegistry("192.168.10.192", 8494).bind(IRemoteA.RMI_NAME, 
            UnicastRemoteObject.exportObject(new RemoteAB(), 8494));
    
    Thread.currentThread().getThreadGroup().getParent().list();
}


标签: rmi 线程
共有 人打赏支持
粉丝 14
博文 110
码字总数 32029
×
无知有趣
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: