Java 如何确定所有网络呼叫何时完成?

Java 如何确定所有网络呼叫何时完成?,java,android,multithreading,okhttp3,Java,Android,Multithreading,Okhttp3,我有一个片段,它显示了一个进度条onViewCreated。然后,通过Okhttp在restapi上异步执行几个网络调用。网络调用通过Okhttp的enqueue方法在后台运行 //several calls similar to this okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e)

我有一个片段,它显示了一个进度条
onViewCreated
。然后,通过Okhttprestapi上异步执行几个网络调用。网络调用通过Okhttp的
enqueue
方法在后台运行

//several calls similar to this
okHttpClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            //Response JSOn is parsed here
            //then inserted to SQLite
        }
    });
在每个回调中,解析响应JSON,并将其插入SQLite表中,以进行脱机数据访问。图像也将被检索和缓存以供脱机使用


如何判断何时从主线程中完成
所有
线程,以关闭进度条并通知用户?

。。。你计算开始的线程数和完成的线程数?@slowy这样做可靠吗?如果你“安全地”实现它,是的-这也是最简单的解决方案,但可能太简单了。。。你应该考虑通知自己线程管理。我不确定它在android上是如何工作的,但总的来说,在没有一定控制的情况下创建线程并不是一种最佳实践,很容易使应用程序崩溃……这不是它的工作方式,儿子。如果你问了一个问题,甚至说,你没有时间自己去弄清楚,或者更糟糕的是,你不想学习,东西是如何工作的,你为什么会认为,这个问题的读者会花时间来回答?这是一个相当高的要求,老实说:非常粗鲁:你刚刚告诉我,我的时间不如你的。我真的很喜欢帮助别人,并看到他们可以从我的经验和知识中学习,因为有些人也为我做了同样的事情——但我不会做你的工作@首先,我的评论并不意味着粗鲁。Stackoverflow是一个分享知识和经验的地方。我当然可以使用更有经验的开发人员的建议,他们可以根据他们的经验指导我使用最佳实践。我不希望任何人做我的工作,我想学习和被引导。我已经阅读了很多关于这个问题的文档:反应式编程、承诺、Java未来等等。根据您的经验,最好的方法是什么?