0
我正在开发一个在某些时候运行服务的android应用程序。该服务运行一个耗时的操作的新线程,并等待countDownLatch为零。之后,它会运行另一个线程进行另一个耗时的操作(该新线程现在不是真的必要,但将在不久的将来)。CountDownLatch.await()挂起后台线程
现在......在启动downloadThread后,如果我按照如下所示等待,主线程和downloadThread暂停操作。但是,如果我等待uploadThread中的countDownLatch一切正常。
Thread downloadThread = new Thread(new Runnable() {
@Override
public void run() {
downloadFiles(mMediaFileList);
}
});
downloadThread.start();
try {
Log.d("UploadMedia", "Waiting for DownloadMedia to finish");
mCountDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
Thread uploadThread = new Thread(new Runnable() {
@Override
public void run() {
uploadMedia();
}
});
uploadThread.start();
这不是一个真正的问题,但不是它应该两种方式工作?有什么我错过了.await()功能?
干杯!
编辑:仅供参考,downloadFiles具有等待任务完成或失败的回调。这些回调是否可以在由.await()暂停的主线程上工作?
感谢您的输入!实际上,latch会在downloadMedia中倒数。当锁存器达到零时,意味着所有的文件都被下载了。 uploadMedia只抓取所有可用的文件并上传它们。在downloadFiles中实现回调的方法来自第三方库...这就是为什么我不确定这些回调被“发送”到哪里。 – Koopa