文档章节

RMI线程分析

无知有趣
 无知有趣
发布于 2014/06/24 15:32
字数 316
阅读 142
收藏 0

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();
}


© 著作权归作者所有

共有 人打赏支持
无知有趣
粉丝 13
博文 117
码字总数 33264
作品 0
北京
后端工程师
私信 提问
三个实例演示 Java Thread Dump 日志分析

jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiti...

旁观者-郑昀
2013/02/08
0
0
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space内存溢出问题求解

程序出现这个内存溢出的错误,用jdk自带的visualvm查看内存的使用情况,用了60多兆,visualvm显示的有好多RMI TCP Connection这种线程,线程出现这个错误是什么原因啊?怎么解决?还有哪些内...

happylifelx
2014/09/04
6.5K
1
三个实例演示 Java Thread Dump 日志分析

jstack Dump 日志文件中的线程状态dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiti...

mal
2014/05/19
0
0
三个实例演示 Java Thread Dump 日志分析

dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) ...

小小小七
2014/07/24
48
0
关于tomcat多线程使用RMI的疑问

tomcat在对client提供服务时,应该是多线程的吧。 在这个线程里,本地通过rmi获取了远程对象的一个实例,然后要使用这个实例 操作方法得到结果。 我的疑问是:tomcat的多线程情况下,是否要考...

强子1985
2015/03/08
764
2

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
10
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部