我将一个任务分成2个部分A和B,这个任务主要是计算的我用通过使用rmi 
fun(A)//这个是在本机上算
Remot.fun(B)//这个是在另外一台电脑上面算结果效率差不多,是不是因为java的执行是顺序的啊,fun()执行完了,才执行Remot.fun()后来我用多线程,把fun和Remot.fun都封到一个线程类里面去了 因为这2个操作都有一个返回结果
所以在线程里面设计了一个 gets()方法,得到run()计算的结果,结果调用的时候就出问题了
t1,t2都是线程类的实例  在t1.start() 和 t2.start()  我用t1.gets()方法希望得到一个返回结果,结果返回的是null

解决方案 »

  1.   

    CalBuffer c=Re_call()//这个Recall方法调用了一个rmi对象的
    String qd1 = qdata.buffer(args);//这个调用的是本地方法   
    String qd2 =c.buffer(args);//调用的是另外一台电脑上的方法这种方法调用rmi,好像效果一点都不明显  那应该怎么用rmi呢,我希望 两个buffer方法能够同时调用,这样才能节约时间
      

  2.   

    什么意思啊
    class thread2 extends Thread{
    int s
        int a,b;
    public thread2(int a, int b,int tag){
    this.a=a;
                        this.b=b;
    }

      public void run(){
     
          que();
     
      }
     
      public  void que(){
     
      if(tag==0) s=a+b;        
             }
             else if(tag==1){s=a-b;
        }
     
      public String getS(){
      return s;
      }
      }我得线程逻辑就是这样得
    调用start方法以后,在调用gets方法,得到得结果是空。。有什么办法解决得这问题呢
      

  3.   

    哪位能指导一下啊第一:怎么从线程里面返回一个值,并且返回之前要保证run方法里面的程序运行完毕第二:怎么通过rmi和线程模拟并行计算,要求2台电脑能够同时运行一个程序,假设运算程序和数据都已经准备好了
      

  4.   

    采用多线程调用远程方法进行计算,思路是没问题的,的确可以提高运算效率,特别是在进行大量数据的计算的时候很有用;
    但是你在线程间共享数据的时候有点问题,所以会返回null,建议你可以去看看java thread,考虑用另外一种数据共享的方式。
      

  5.   

    在t1.start() 和 t2.start()之后
    你至少也要等他们返回结果,这两个语句没有阻塞,
    所以不能马上get
      

  6.   

    同步出现了问题,将run() 和 getS() synchronized,虽然丑陋了一点,但应该能解决问题。
      

  7.   

    传个对象过去,运算完之后回call你的方法:)