繁体   English   中英

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

[英]How to wait inside a method, till other method is completed

假设我们有以下代码:

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;
}

您可能想要使用Java Future之类的东西。

看一下文档或阅读这个简单的例子

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

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

看到这个链接

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

java-executors如何在任务完成时被通知而不会阻塞

您应该使用加入方法...

当一个线程在另一个线程上调用join()时,当前正在运行的线程将等待,直到与之连接的线程完成为止。

可能是递归方法

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 ,使其countinue执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM