Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使线程等待而不阻塞子线程_Java_Android_Multithreading - Fatal编程技术网

Java 使线程等待而不阻塞子线程

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();

下面是我在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来完成一些工作。现在,当我单击按钮时,它将调用method1,然后调用method2

这里的问题是,当调用method1时,它将调用API1,API1将返回状态,但它将在内部创建一些线程并启动一些下载任务。因为API1会立即返回,所以我的程序会转到method2并开始调用API2

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

我尝试了,
Thread.sleep
wait and notify
,这两种方法都不起作用,因为它停止了主线程,同时也暂停了API正在创建的线程

有什么建议让我的计划等待或任何其他方式来实现这一点

您(库)是否正在使用
AsyncTasks

如果是这样的话,我认为您会因为不同的API行为而遇到问题

从蜂巢开始,线程使用单线程池,这意味着始终只有一个线程在运行。。。结果是,如果一个线程被阻塞,那么所有其他线程也会被阻塞。。。 请参阅,要点“执行顺序”


为了解决这个问题,您(库)必须使用
异步任务
线程池执行器

为什么不使用句柄使用线程,称之为ThredManager,启动其他线程并使用倒计时闩锁同步安卓,现在我有理由面对这个问题。我不知道图书馆里到底在做什么,因为它是由另一个团队编写的。我可以在代码中做些什么来满足我的需要吗?您是否使用了
AsyncTasks
?我想,如果不是,你还有另一个问题。。。我编辑了我的帖子并删除了对帖子的评论。。。
AsyncTasks
有一个公共线程池。。。如果使用线程,它们将是独立的。。。每个线程都是一个新的并行线程,然后。。。