don*_*don 2 java multithreading android
我正在为android做一个下载应用程序.下载部分现已成功实施并正常运行.我需要的是按段并行下载文件.更清楚的是,如果用户指定8个段,我想创建8个线程并进行下载.那么我将以什么方式动态创建8个线程?另外,当我为手机做这个时,我怎样才能将内存消耗保持在最低水平?我以前没有使用过线程,所以我希望你能帮助我.感谢您的时间!:)
创建固定数量线程的最有效方法是使用ExecutorService:
ExecutorService exec = Executors.newFixedThreadPool(8);
Run Code Online (Sandbox Code Playgroud)
它基本上是一个固定大小的线程池,它承担了开发人员的大量管理负担.
编辑:所以你的流程应该是这样的:
首先,定义你的线程任务类(每个线程将执行call自己的任务的方法):
class ThreadTask implements Callable<Object> {
public Object call() {
// execute download
...
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
如果要将任何参数传递给任务,请在上面的类中放置一些私有字段,并将它们传递给构造函数.此外,您可以从中返回任何类型call,只需更改implements Callable<...>零件中的类型即可.
如果要关闭线程,请创建池并提交任务:
ExecutorService exec = Executors.newFixedThreadPool(8);
List<Future<Object>> results = new ArrayList<Future<Object>>();
// submit tasks
for(int i = 0; i < 8; i++) {
results.add(exec.submit(new ThreadTask()));
}
...
// stop the pool from accepting new tasks
exec.shutdown();
// wait for results
for(Future<Object> result: results) {
Object obj = result.get();
}
Run Code Online (Sandbox Code Playgroud)