我们说我们有这个代码:
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;
}
答案 0 :(得分:1)
答案 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
中找到一个正整数,这样它就会计算执行次数