Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Tâche de Multithreading | Principes de Base du Multithreading
Multithreading en Java

bookTâche de Multithreading

Tâche

Vous devez écrire la logique pour créer 100 threads, chacun d'eux devant calculer la factorielle de son indice dans une boucle et enregistrer le résultat dans le tableau results. Vous devez également attendre que tous les threads soient terminés avant d'afficher les résultats. (méthode join() )

Note
Remarque

Ne modifiez rien d'autre que la méthode calculateFactorialsInParallel()

Les méthodes factorial(), printMassive(), getResults() sont déjà prêtes et vous n'avez pas besoin de les modifier.

factorial(Integer) - calcule la factorielle du nombre passé en argument ;

printMassive(BigInteger[]) - affiche le tableau de résultats dans la console ;

getResults() - retourne le tableau de résultats (utilisé pour les tests) ;

SIZE_MASSIVE - constante définissant la taille du tableau (NE PAS MODIFIER) ;

results[] - tableau pour enregistrer les résultats.

Une fois la tâche terminée, accéder à src/test/java/TaskThreadTest.java et l’exécuter

Un seul test doit être réussi lors de la première exécution

Lorsque la tâche est correctement réalisée, tous les tests doivent être validés ; si un test échoue, cela signifie que la méthode calculateFactorialsInParallel() a été mal implémentée ou que certains champs/méthodes qui ne doivent pas être modifiés ont été changés

Plan de mise en œuvre

  1. Créer un tableau de threads : Définir un tableau d’objets Thread, où chaque élément correspond à un thread différent. La taille du tableau doit correspondre à celle du tableau à traiter (SIZE_MASSIVE = 100).

  2. Initialiser chaque thread : Dans une boucle parcourant chaque élément du tableau, créer un nouveau thread. À l’intérieur de ce thread, effectuer la tâche requise (calculer la factorielle de l’indice). Stocker le résultat dans le tableau des résultats.

  3. Démarrer les threads : Une fois chaque thread créé, l’initier en appelant la méthode start().

  4. Attendre la fin de tous les threads : Après avoir démarré tous les threads, utiliser la méthode join() sur chaque thread afin de garantir que le thread principal du programme attende la fin de tous les threads. Cela assure que tous les calculs sont terminés avant que le thread principal du programme ne poursuive.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 7

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you show me how to implement the calculateFactorialsInParallel() method?

What should I do if some tests do not pass after running them?

Can you explain how to use the join() method with threads in this context?

Awesome!

Completion rate improved to 3.33

bookTâche de Multithreading

Glissez pour afficher le menu

Tâche

Vous devez écrire la logique pour créer 100 threads, chacun d'eux devant calculer la factorielle de son indice dans une boucle et enregistrer le résultat dans le tableau results. Vous devez également attendre que tous les threads soient terminés avant d'afficher les résultats. (méthode join() )

Note
Remarque

Ne modifiez rien d'autre que la méthode calculateFactorialsInParallel()

Les méthodes factorial(), printMassive(), getResults() sont déjà prêtes et vous n'avez pas besoin de les modifier.

factorial(Integer) - calcule la factorielle du nombre passé en argument ;

printMassive(BigInteger[]) - affiche le tableau de résultats dans la console ;

getResults() - retourne le tableau de résultats (utilisé pour les tests) ;

SIZE_MASSIVE - constante définissant la taille du tableau (NE PAS MODIFIER) ;

results[] - tableau pour enregistrer les résultats.

Une fois la tâche terminée, accéder à src/test/java/TaskThreadTest.java et l’exécuter

Un seul test doit être réussi lors de la première exécution

Lorsque la tâche est correctement réalisée, tous les tests doivent être validés ; si un test échoue, cela signifie que la méthode calculateFactorialsInParallel() a été mal implémentée ou que certains champs/méthodes qui ne doivent pas être modifiés ont été changés

Plan de mise en œuvre

  1. Créer un tableau de threads : Définir un tableau d’objets Thread, où chaque élément correspond à un thread différent. La taille du tableau doit correspondre à celle du tableau à traiter (SIZE_MASSIVE = 100).

  2. Initialiser chaque thread : Dans une boucle parcourant chaque élément du tableau, créer un nouveau thread. À l’intérieur de ce thread, effectuer la tâche requise (calculer la factorielle de l’indice). Stocker le résultat dans le tableau des résultats.

  3. Démarrer les threads : Une fois chaque thread créé, l’initier en appelant la méthode start().

  4. Attendre la fin de tous les threads : Après avoir démarré tous les threads, utiliser la méthode join() sur chaque thread afin de garantir que le thread principal du programme attende la fin de tous les threads. Cela assure que tous les calculs sont terminés avant que le thread principal du programme ne poursuive.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 7
some-alt