gpt4 book ai didi

java - 等待函数完成,直到回调到来

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:14 24 4
gpt4 key购买 nike

我正在尝试实现一种机制,它可以让我等待函数完成(特别是返回调用),直到我在接收器内得到一些响应。接收方正在等待来自 API 的某些调用或其他一些耗时操作的响应。

我试图做一个在 boolean 标志( volatile )上运行的 while 循环,该标志应该在接收器中更改,但效果是循环永远运行并且标志永远不会改变。

我还尝试实现等待通知机制,但是等待函数“阻止”接收者调用通知。

编辑:我也尝试使用 BlockingQueue 但这里也没有运气。

我在我的实现中附上了一些示例代码。

public String getRemoteInfo() {
getInfo();
while (!finished){
Uninterruptibles.sleepUninterruptibly(200, TimeUnit.MILLISECONDS);
}
return globalResult;
}

private void getInfo(){
service.getInfo(this); //"this" is an implementation of receiver
}

@Override
public void infoReceived(String result) {
globalResult = result;
finished = true;
}

最佳答案

这是一种可怕的做法 - 像这样的 sleep 称为轮询,它对性能、电池生命周期等不利。正确的方法是使用信号量,并让希望等待的线程等待信号量,并且在后台执行的函数在完成时向信号量发出信号。

请注意,您永远不应该在 UI 线程上这样等待,因为您的应用程序在等待时将失去响应。

关于java - 等待函数完成,直到回调到来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53708975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com