Java 使线程等待而不阻塞子线程
下面是我在Android应用程序中所做的示例Java 使线程等待而不阻塞子线程,java,android,multithreading,Java,Android,Multithreading,下面是我在Android应用程序中所做的示例 public OnClickListener onSelectBtnClicked = new OnClickListener() { @Override public void onClick(View v) { method1(); method2(); } private void method1() { Interface.API1();
public OnClickListener onSelectBtnClicked = new OnClickListener() {
@Override
public void onClick(View v) {
method1();
method2();
}
private void method1() {
Interface.API1();
}
private void method2() {
Interface.API2();
}
};
在这里,我试图使用一个外部库,所以我将调用他们的API来完成一些工作。现在,当我单击按钮时,它将调用method1,然后调用method2
这里的问题是,当调用method1时,它将调用API1,API1将返回状态,但它将在内部创建一些线程并启动一些下载任务。因为API1会立即返回,所以我的程序会转到method2并开始调用API2
我需要一种方法使我的程序等待我的API1完成它的任务
我尝试了,Thread.sleep
和wait and notify
,这两种方法都不起作用,因为它停止了主线程,同时也暂停了API正在创建的线程
有什么建议让我的计划等待或任何其他方式来实现这一点 您(库)是否正在使用AsyncTasks
如果是这样的话,我认为您会因为不同的API行为而遇到问题
从蜂巢开始,线程使用单线程池,这意味着始终只有一个线程在运行。。。结果是,如果一个线程被阻塞,那么所有其他线程也会被阻塞。。。
请参阅,要点“执行顺序”
为了解决这个问题,您(库)必须使用
异步任务和线程池执行器。为什么不使用句柄使用线程,称之为ThredManager,启动其他线程并使用倒计时闩锁同步安卓,现在我有理由面对这个问题。我不知道图书馆里到底在做什么,因为它是由另一个团队编写的。我可以在代码中做些什么来满足我的需要吗?您是否使用了AsyncTasks
?我想,如果不是,你还有另一个问题。。。我编辑了我的帖子并删除了对帖子的评论。。。AsyncTasks
有一个公共线程池。。。如果使用线程,它们将是独立的。。。每个线程都是一个新的并行线程,然后。。。