gpt4 book ai didi

java - 让我的线程等待而不阻塞子线程

转载 作者:行者123 更新时间:2023-12-01 04:16:00 24 4
gpt4 key购买 nike

这是我在 Android 应用程序中所做的示例

public OnClickListener onSelectBtnClicked = new OnClickListener() {
@Override
public void onClick(View v) {
method1();
method2();
}
private void method1() {
Interface.API1();
}

private void method2() {
Interface.API2();
}

};

在这里,我尝试使用外部库,因此我将调用他们的 API 来完成一些工作。现在,当我单击按钮时,它将调用方法1,然后调用方法2

这里的问题是,当调用method1时,它会调用API1,API1会返回状态,但它会在内部创建一些线程并启动一些下载任务。由于API1立即返回,我的程序继续到方法2并开始调用API2

我需要一种方法让我的程序等待 API1 完成其任务

我尝试了Thread.sleep等待和通知,两者都不起作用,因为它停止了主线程,并且还暂停了API正在创建的线程

有什么建议可以让我的程序等待或有其他方法来实现这一点吗?

最佳答案

您(库)使用AsyncTasks吗?

如果是这样,我认为您由于不同的 API 行为而遇到了问题......

从 Honeycomb 开始,线程使用单个线程池,这意味着始终只有一个线程在运行...结果如下,如果一个线程被阻塞,所有其他线程也会被阻塞...请参阅http://developer.android.com/reference/android/os/AsyncTask.html#executeOnExecutor%28java.util.concurrent.Executor,%20Params...%29 ,点“执行顺序”

要解决这个问题,您(库)必须将 AsyncTaskTHREAD_POOL_EXECUTOR 一起使用...

关于java - 让我的线程等待而不阻塞子线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445940/

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