Bonjour,
je souhaite utiliser les threads pour tirer partie de plusieurs processeurs d'une machine pour faire des calculs.
Mais après mes différentes lectures, j'ai quelques questions bêtes :
1/ Si j'envoie à mes threads une référence vers mes données d'entrée, une arraylist d'objets, qui ne sera utilisée qu'en lecture, je n'aurais pas de problème de concurrence ?
2/ Puisqu'une méthode run() ne peut rien retourner, pour stocker des résultats, je dois transmettre à mon run une référence vers ma structure de données de sortie, que se passe-t-il si deux threads tentent d'ajouter en même temps un élément à ma structure de sortie ? (Pas de lecture, uniquement un ajout d'objet à la fin d'un thread)
3/ Si j'ai 1000 éléments dans ma structure de données d'entrée, je pourrais lancer 1000 threads en bouclant sur ma structure et en lançant un nouveau thread à chaque fois. MAis je me doute que ce n'est pas une bonne idée.
Si je veux limiter le nombre de thread à 4, y'a-t-il une méthode particulière pour attendre qu'un des 4 premiers threads soit terminé ? Puis-je mettre mes threads dans une arraylist et ne lancer les suivants que quand l'état d'un des thread est passé à l'état "mort" en parcourant sans cesse mon arraylist à la recherche d'un thread mort ?
Merci pour votre aide !
Partager