假如有很多线程或进程对RMI Server的同一个注册类的同一个方法并发调用,RMI Server端会开启单个线程去接受请求调用吗(或者说自身带有线程池没有)?还是所有顺序逐一访问的,处理完一个请求后,接着才第二个?
不知说明白没有。望指教!!!

解决方案 »

  1.   

    这个是单线程的(好像试过),因为Sun封装了RMI的实现,所以,我们不需要考虑它的线程问题,如果觉得一个方法不想让它有多线程同步访问,把那个方法中的对象同步就可以了.
      

  2.   


    既然你说“单线程的”,那还同步方法中的对象做什么?
    还有,我从另一个地方摘过来一段,但我也不确定正确性
    “远程方法调用(Remote Method Invocation) RMI使你能够调用在另外一个JVM上运行的对象的方法。当你使用RMI调用一个远程方法时,这个方法的参数被打包(装配)成一个比特流,并且穿越整个网络到达远程JVM,在那里它会被解包(分解)并传递给远程方法。
    当RMI代码调用了你的远程对象时,这个调用发生在哪一个线程?你并不知道,但绝对不是你创建的那个线程——你的对象被RMI管理的一个线程所调用。RMI创建了多少个线程?在许多RMI线程中,同一个对象的同一个方法是不是有可能同时被调用4?
    一个远程对象必须去守卫两种线程安全风险:对那些可能会与其他对象共享的状态进行适当调节,应正确地对远程对象本身进行调控(因为相同的对象可能同时被多个线程调用)。比如servlets,RMI对象应该对同时发生的多个调用有所准备,并且必须提供它们自己的线程安全。”
    http://blog.csdn.net/antimatterworld/archive/2007/07/27/1712490.aspx