Bonjour,
Afin d’accélérer mon application, je souhaite utiliser des threads sur des opérations distinctes mais qui prennent un certain temps. Cependant, je ne sais pas comment implémenter une gestion de threads dans mon cas actuel.
Mon code ressemble à cela :
Dans mon cas, chaque appelle à bindMyObject() prend un temps relativement long. Ce temps est nécessaire et compréhensible, mais chaque appel à la fonction est bien détaché et pourrait très bien s'exécuter en parallèle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private List<Map> maFonction(Collection<myObject> params) throws SQLException{ List<Map> maps = new ArrayList<Map>(); for (myObject o : params) { /** * bindMyObject() prend un temps significatif */ maps.add(Processor.bindMyObject(o)); } return maps; }
Mais là où cela me pose un soucis, c'est que le retour de bindMyObject doit être stocké dans ma variable maps, qui une fois remplie est retourné.
Sans valeur de retour de la part de bindMyObject(), je ferais un extends Threads sur la class Processor puis je lancerai mes threads à la suite. Avec join() j'aurai attendu (entre ma boucle for et mon return) que chaque thread termine bien son execution et je pense que cela aurait été bon.
Mais ici avec une valeur de retour je ne sais pas vraiment comment faire. Pourriez-vous me guider sur cette question ?
Merci
Partager