gpt4 book ai didi

java - 在 Android 中创建用户指定数量的线程

转载 作者:太空狗 更新时间:2023-10-29 16:22:25 25 4
gpt4 key购买 nike

我正在为安卓做一个下载应用程序。下载部分现已成功实现并正常运行。我需要的是分段并行下载文件。更清楚地说,如果用户指定 8 个段,我想创建 8 个线程并进行下载。那么我可以通过什么方式动态创建8个线程呢?另外,当我为手机这样做时,我如何才能将内存消耗保持在最低水平?我以前没有使用过线程,所以我希望你能帮助我。感谢您的时间! :)

最佳答案

创建固定数量线程的最有效方法是使用 ExecutorService :

ExecutorService exec = Executors.newFixedThreadPool(8);

它基本上是一个固定大小的线程池,减轻了开发人员的大量管理负担。

编辑:所以你的流程应该是这样的:

首先,定义你的线程任务类(每个线程都会执行自己任务的call方法):

class ThreadTask implements Callable<Object> {

public Object call() {
// execute download
...
return result;
}
}

如果要向任务传递任何参数,请将一些私有(private)字段放在上面的类中,并通过构造函数传递它们。此外,您可以从 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();
}

关于java - 在 Android 中创建用户指定数量的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11357445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com