等待方法的返回值

art*_*ros 10 java

我真的是java中的菜鸟,所以这是我的问题.我有一个返回的字符串:

public static String pushToServer(String data){
    //some code here
            Thread.sleep(10000);
            getResponse(); //accesing a public void method
    return string;
    }
Run Code Online (Sandbox Code Playgroud)

问题是,该return string代码返回null,因为getResponse()方法请求几秒钟来获取响应.有没有办法等待getResponse()完成然后才返回String?

Ada*_*der 16

您可以尝试使用Future对象和Callable任务.当您想在另一个线程中运行某个任务并稍后使用返回的数据时,它们非常有用.当您想要检索操作结果并且任务尚未完成时,您的操作将只是阻塞并等待一切准备就绪.在这里您可以找到如何使用它们:http://www.javacodegeeks.com/2011/09/java-concurrency-tutorial-callable.html

简单的例子:

public class YourTask implements Callable {
    public String call() throws Exception {
        /* Do what you want to do */
    }
}
Run Code Online (Sandbox Code Playgroud)

代码中的某处:

Future future = yourThreadPool.submit(new YourTask());
Run Code Online (Sandbox Code Playgroud)

使用结果:

String returnString = future.get(15, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)