文档章节

RMI线程分析

无知有趣
 无知有趣
发布于 2014/06/24 15:32
字数 316
阅读 140
收藏 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
三个实例演示 Java Thread Dump 日志分析

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

mal
2014/05/19
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
5.5K
1
三个实例演示 Java Thread Dump 日志分析

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

小小小七
2014/07/24
48
0
Java Thread Dumps 日志分析

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

李星
2014/05/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day63-20180821-流利阅读笔记-待学习

性别歧视在日本:“我是女生,所以社会不让我学医” 毛西 2018-08-21 1.今日导读 大家在看病的时候,有留意过女医生的比例吗?在性别歧视现象十分严重的日本,男医生和女医生的比例达到了惊人...

aibinxiao
45分钟前
2
0
Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77

解决办法: 下面就给大家一个正确的姿势在Ubuntu上安装Nvidia驱动: (a)首先去N卡官网下载自己显卡对应的驱动:www.geforce.cn/drivers (b)下载后好放在英文路径的目录下,怎么简单怎么来...

AI_SKI
今天
4
0
深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
今天
1
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
今天
1
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部