C'est le problème que j'ai: J'ai une grande séquence de certains objets (List<SomeClass>
), et je veux effectuer une opération sur tous les éléments de la liste et obtenir une nouvelle séquence (List<SomeOtherClass>
).Comment puis-je paralléliser le mappage d'une liste?
Comme:
List<SomeOtherClass> list = new ArrayList<SomeOtherClass>();
for(SomeClass sc : originalList)
list.add(someOperation(sc));
Depuis l'opération someOperation
n'a pas d'effets secondaires, et la liste est assez grand, je veux cette opération de cartographie à parallélisé.
Quelle sera la meilleure façon de faire cela en Java?
Veuillez d'abord lire la question et la réponse même. L'accent est mis sur le fait qu'il n'est pas nécessaire de se préoccuper de la concurrence. Et, en passant, l'exemple est nommé SimpleThread. Cela montre simplement l'exécution simultanée de code. A propos de Java efficace, j'admets ce livre et je préfère le penser en Java. Mais c'est plus avancé et j'ai décidé de choisir un échantillon simple d'un livre qui convient mieux aux débutants. Parce que la question semble être une question débutant. –
Je pense que dans le cas de l'OP, cela va juste essayer de créer trop de threads et de planter le programme. Rappelez-vous: 'list' est ** grand **. – trutheality
Bien sûr. L'exemple est juste pour introduire le concept de threading, pas comme code final pour la question.Pour un grand nombre de threads, une solution de pool de threads doit être utilisée. –