如何在方法内等待,直到其他方法完成

时间:2015-06-09 08:35:01

标签: java proxy

我们说我们有这个代码:

int number;

public void onMessageReceived(int num) {
    number = num;
}

public int getNumber() {
    sendMessage("number")
    return number;
}

只有在1秒后才能收到消息。

你如何等待"直到你得到"数字"没有冻结主线?

public int getNumber() {
    sendMessage("number")
    //WAIT TILL I GET THE "NUMBER"
    return number;
}

4 个答案:

答案 0 :(得分:1)

你可能想要使用像Java Future这样的东西。

查看docs或阅读此简单example

答案 1 :(得分:0)

这种异步调用需要一些回调机制。

您可能需要使用订阅事件调用的观察者设计模式。

请参阅此link

或尝试在此问题中使用CallbackTask:

java-executors-how-to-be-notified-without-blocking-when-a-task-completes

答案 2 :(得分:0)

你应该使用join方法......

当一个线程在另一个线程上调用join()时,当前运行的线程将一直等到它加入的线程完成。

答案 3 :(得分:-1)

可能是递归方法逻辑

public int getNumber() {

 while(number!=0)
 getNumber(); //Assuming number will not be null till you get positive integer greater than a zero same method will get recalled.
 sendMessage("number")

return number;
}

onMessageReceived(int num)被调用时,您可以在number中找到一个正整数,这样它就会计算执行次数