在android中,一个任务是使用设备的所有核心执行还是只执行一个?

时间:2016-08-17 13:09:56

标签: android multithreading performance multicore multitasking

例如拥有一个8核设备,并做一个像这样的巨大任务:

int sum=1;
for (int i=0; i<99999999; i++){
    sum=(int)(sum+sum);
}

此任务将使用设备的8个核心执行?还是只有一个?我想知道你是否应该为每个核心手动创建8个任务的8个线程,或者你可以在一个线程中执行你的大任务,因为操作系统将能够同时使用你的任务中的8个核心。 / p>

谢谢。

1 个答案:

答案 0 :(得分:0)

您的示例将仅由单核执行。

如果要使用多个内核,则应将程序分配到不同的线程上。 如果要更好地与线程并行执行,则应使用Executors并且不要设置池限制或将其设置为相等的核心。

有时内核并不相同,有些内核仅供操作系统使用,因此您最好知道可以使用多少内容。您可以看到有多少内核可供使用:

int n = Runtime.getRuntime().availableProcessors();