我有一个名为的方法的对象StartDownload(),它启动三个线程.
如何在每个线程执行完毕后收到通知?
有没有办法知道一个(或全部)线程是完成还是仍在执行?
我无法使用shutdown(),awaitTermination()因为有可能在等待时将新任务添加到ThreadPoolExecutor中.
所以我正在寻找一种方法,等待ThreadPoolExecutor清空它的队列并完成所有任务而不停止在该点之前添加新任务.
如果它有任何区别,这适用于Android.
谢谢
更新:几周后重新访问后,我发现在这种情况下修改后的CountDownLatch对我来说效果更好.我会保留答案标记,因为它更适用于我的要求.
在Java应用程序中实现并发的正确方法是什么?我知道Threads和东西,当然,我已经为Java编程了10年了,但是并没有太多的并发经验.
例如,我必须异步加载一些资源,并且只有在加载完所有资源之后,我才能继续并做更多的工作.不用说,他们没有完成任务的顺序.我该怎么做呢?
在JavaScript中,我喜欢使用jQuery.deferred基础设施
$.when(deferred1,deferred2,deferred3...)
.done(
function(){//here everything is done
...
});
Run Code Online (Sandbox Code Playgroud)
但是我在Java中做什么?