文档章节

RMI线程分析

无知有趣
 无知有趣
发布于 2014/06/24 15:32
字数 316
阅读 140
收藏 0
点赞 0
评论 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
博文 116
码字总数 33182
作品 0
北京
后端工程师
JDK性能监控工具

JDK命令行工具jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程,可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态jps [options] [hos tid]列出正在运行的虚拟机...

那位先生 ⋅ 2015/04/07 ⋅ 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 ⋅ 1

三个实例演示 Java Thread Dump 日志分析

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

旁观者-郑昀 ⋅ 2013/02/08 ⋅ 0

三个实例演示 Java Thread Dump 日志分析

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

小小小七 ⋅ 2014/07/24 ⋅ 0

三个实例演示 Java Thread Dump 日志分析

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

mal ⋅ 2014/05/19 ⋅ 0

大型Java分布式应用纵横谈

在当今应用架构里,分布式和应用与服务之间的通信都是核心思想。想要从分布式中获益,你必须牢牢记住几条基本的原则,否则你可能会很容易遇到性能和扩展性问题。在开发阶段这些问题不会经常出...

山哥 ⋅ 2012/02/24 ⋅ 0

Java Thread Dumps 日志分析

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

李星 ⋅ 2014/05/30 ⋅ 0

jvisualvm的使用

本文为链接学习: 原文链接:http://my.oschina.net/kone/blog/157239 jdk自带有个jvisualvm工具、该工具是用来监控java运行程序的cpu、内存、线程等的使用情况。并且使用图表的方式监控jav...

heroShane ⋅ 2014/01/26 ⋅ 0

关于tomcat多线程使用RMI的疑问

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

强子哥哥 ⋅ 2015/03/08 ⋅ 2

虚拟机监控命令工具

命令行工具大多数是基于tools.jar的一层包装,如果是运行在1.5的虚拟机之上,需要开启jmx管理功能,如果是1.6以上,则默认是开启的 jps,显示系统内所有的hotspot虚拟机进程 本地,本地虚拟机...

281165273 ⋅ 2014/04/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring MVC基本概念

只写Controller

颖伙虫 ⋅ 14分钟前 ⋅ 0

微软重金收购GitHub的背后逻辑原来是这样的

全球最大的开发者社区GitHub网站花落谁家的问题已经敲定,微软最终以75亿美元迎娶了这位在外界看来无比“神秘”的小家碧玉。尽管此事已过去一些时日,但整个开发者世界,包括全球各地的开源社...

linux-tao ⋅ 14分钟前 ⋅ 0

磁盘管理—逻辑卷lvm

4.10-4.12 lvm 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化、挂载-->扩容。 磁盘分区 注: 创建分区时需要更改其文件类型为lvm(代码8e) 分区 3 已设置为 Linu...

弓正 ⋅ 35分钟前 ⋅ 0

Spring源码解析(六)——实例创建(上)

前言 经过前期所有的准备工作,Spring已经获取到需要创建实例的 beanName 和对应创建所需要信息 BeanDefinition,接下来就是实例创建的过程,由于该过程涉及到大量源码,所以将分为多个章节进...

MarvelCode ⋅ 54分钟前 ⋅ 0

js模拟栈和队列

栈和队列 栈:LIFO(先进后出)一种数据结构 队列:LILO(先进先出)一种数据结构 使用的js方法 1.push();可以接收任意数量的参数,把它们逐个推进队尾(数组末尾),并返回修改后的数组长度。 2....

LIAOJIN1 ⋅ 今天 ⋅ 0

180619-Yaml文件语法及读写小结

Yaml文件小结 Yaml文件有自己独立的语法,常用作配置文件使用,相比较于xml和json而言,减少很多不必要的标签或者括号,阅读也更加清晰简单;本篇主要介绍下YAML文件的基本语法,以及如何在J...

小灰灰Blog ⋅ 今天 ⋅ 0

IEC60870-5-104规约传送原因

1:周期循环2:背景扫描3:自发4:初始化5:请求6:激活7:激活确认8:停止激活9:停止激活确认10:激活结束11:远程命令引起的返送信息12:当地命令引起的返送信息13:文件传送20:响应总召...

始终初心 ⋅ 今天 ⋅ 0

【图文经典版】冒泡排序

1、可视化排序过程 对{ 6, 5, 3, 1, 8, 7, 2, 4 }进行冒泡排序的可视化动态过程如下 2、代码实现    public void contextLoads() {// 冒泡排序int[] a = { 6, 5, 3, 1, 8, 7, 2, ...

pocher ⋅ 今天 ⋅ 0

ORA-12537 TNS-12560 TNS-00530 ora-609解决

oracle 11g不能连接,卡住,ORA-12537 TNS-12560 TNS-00530 TNS-12502 tns-12505 ora-609 Windows Error: 54: Unknown error 解决方案。 今天折腾了一下午,为了查这个问题。。找了N多方案,...

lanybass ⋅ 今天 ⋅ 0

IDEA反向映射Mybatis

1.首先在pom文件的plugins中添加maven对mybatis-generator插件的支持 ` <!-- mybatis逆向工程 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-ma......

lichengyou20 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部