0

ayant par exemple un dispositif 8 cœurs, et faire par exemple une tâche énorme comme ceci:Dans Android, une tâche est exécutée en utilisant tous les noyaux de l'appareil ou seulement un seul?

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

Cette tâche sera exécutée à l'aide des 8 cores du dispositif? ou juste un? Je veux savoir si vous devez créer manuellement 8 threads avec 1/8 de la tâche pour chaque core ou vous pouvez faire votre énorme tâche en un seul thread parce que le système d'exploitation sera capable d'utiliser les huit cœurs à la fois avec votre tâche.

Merci.

+0

Un seul thread sera exécuté par un seul noyau seulement – Shaishav

+0

comment pouvez-vous répartir la tâche entre les 8 cœurs? en utilisant manuellement 8 discussions? c'est un peu frustrant. Cela devrait être géré automatiquement par le système d'exploitation. – NullPointerException

+0

Vous parlez de 'Parallel Computing' ici. Pas aussi facile que cela puisse paraître: https://en.wikipedia.org/wiki/Parallel_computing – Shaishav

Répondre

0

Votre exemple s'exécutera par un seul cœur.

Si vous souhaitez utiliser plusieurs cœurs, vous devez diviser votre programme sur des threads séparés. Si vous souhaitez améliorer l'exécution parallèle avec des threads, vous devez utiliser Executors et ne pas définir de limite de pool ou définir des coeurs égaux.

Parfois, les noyaux ne sont pas égaux et certains d'entre eux utilisent par OS uniquement, vous le mieux de savoir combien vous pouvez use.You pouvez voir combien noyaux sont disponibles avec ceci:

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

cette fonction fonctionne parfaitement avec les versions Android les plus récentes? – NullPointerException

+0

il devrait, sa fonction Java de base, disponible depuis API lvl1 https://developer.android.com/reference/java/lang/Runtime.html#availableProcessors() – DEADMC

+0

? donc ça ne marche pas? vous dites "Nope" – NullPointerException