Bonjour
Les thread n'ont rien à voir avec java.
Donc les explications non plus.
Un thread c'est un fil d'exécution. Un programme a au moins un thread, dans lequel les instructions du programme sont exécutées dans l'ordre. C'est ce qu'on appelle un fil d'exécution.
En programmation multi threads, plusieurs fils sont exécutés en même temps.
Les points à prendre en compte sont
Bonjour,
Je plussoie les explications de Whismeril.
Toutefois attention au tutoriel qui date de juillet 2004 (Java 4), le langage a beaucoup évolué en 20 ans (actuellement nous sommes en Java 21), en particulier pour améliorer les performances et donc l'usage des threads.
Un petit code qui reprends l'exemple du calcul de moyenne de valeurs :
import java.util.stream.IntStream; public class Test { public static void main(String...args) { average(1_000); average(1_000_000); average(1_000_000_000); } public static void average(int n) { System.out.println("n=" + n); var t0 = System.currentTimeMillis(); var avg1 = IntStream.range(1, n).average().getAsDouble(); var t1 = System.currentTimeMillis(); var avg2 = IntStream.range(1, n).parallel().average().getAsDouble(); var t2 = System.currentTimeMillis(); System.out.println("avg1="+avg1+"; t="+(t1-t0)); System.out.println("avg2="+avg2+"; t="+(t2-t1)); } }
Le résultat dépend beaucoup des performances de la machine, voici les miens
NB. les temps sont en millisecondes
n=1000
avg1=500.0; t=1
avg2=500.0; t=2
n=1000000
avg1=500000.0; t=5
avg2=500000.0; t=16
n=1000000000
avg1=5.0E8; t=305
avg2=5.0E8; t=35
Une explication s'impose :
Pour un tout petit nombre de valeurs (1000), les temps sont quasiment identiques (à 1ms près), pour 1 million de valeurs le temps de calcul de avg1 est plus rapide que avg2 (à 10ms près) alors que pour 1 milliards de valeurs, le temps de calcul de avg1 est 10 fois plus lent que avg2.
Cela s'explique par le coût de mise en place du parallélisme, qui n'est pas neutre. Ainsi pour 1000 valeurs comme pou 1 million, le temps de calcul dédié à la mise en place du parallélisme est supérieur au gain que cela nous apporte. Toutefois plus le nombre de valeurs augmente, plus ce surcoût va être compensé par le gain du parallélisme, on le voit bien avec 1 milliard.
Bonjour
Toutefois attention au tutoriel qui date de juillet 2004 (Java 4), le langage a beaucoup évolué en 20 ans (actuellement nous sommes en Java 21)
J'ai bien précisé "au hasard" :)
Joyeux Noël
23 déc. 2023 à 11:33
Tu peux trouver des tutos sur l'implémentation des threads en java.
Au hasard, celui-ci https://alwin.developpez.com/tutorial/JavaThread/