等待线程结果返回方法的值(Webapp)

时间:2014-02-11 17:31:15

标签: java runnable thread-sleep

我希望能够等待线程从另一个类的某些计算中返回一个值。让我发布一些代码:

public class ClassA implements Runnable{

public boolean threadRunning ; 
public String value  ; 

public ClassA() {
    ...
    }

 public String getValueFromServer() {

  //call to a method in the server that does some calculation

  ClassB.sendPetitionToServer() ;
    t=new Thread (this) ;   
    threadRunning = true ; 
    t.start();
    return value
      }

    public void run()
          {
     while(threadRunning)   
        {
        checkValue ()
        }
      }


      public void checkValue () {
       String value = ClassB.getInstance().getValue ;
       if (value!=null) {
       threadRunning = false ; 
       }

     }

     }

问题是,我如何等待线程从ClassB.SendPetitionFromToServer()返回方法中的值?方法ClassB填充值但必须进行一些花费时间(5-8秒)的计算。 ClassB不是Runnable,是一个简单的类。也许我应该创建另一个存储值的类并通知ClassA。

总结我的问题(也许是混淆甚至我的方法只是简单的愚蠢)。

我正在开发Java WebApp。我有一个实现Runnable接口的ClassA。这个类有一个方法,需要从另一个需要执行一些非常繁重的计算需要时间的ClassB中检索一些信息(从MySQL中检索一些信息,用信息做一些计算......)。在从ClassB获得响应之前,如何从ClassA中停止该方法?无论如何都要这样做吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

你可以在线程上join()然后从线程填充的变量中收集一个值。

但我会调查ExecutorsFutures,因此您可以通过Executor生成一个帖子,获得Future,然后调用Future.get()。它是从线程获取结果的更好,更高级别的机制。