文档章节

RMI线程分析

无知有趣
 无知有趣
发布于 2014/06/24 15:32
字数 316
阅读 141
收藏 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
北京
后端工程师
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space内存溢出问题求解

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

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

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

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

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

旁观者-郑昀
2013/02/08
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的多线程情况下,是否要考...

强子哥哥
2015/03/08
709
2

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
7
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
18
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部