cs_limalima
Messages postés124Date d'inscriptiondimanche 31 août 2008StatutMembreDernière intervention16 décembre 2010
-
25 nov. 2008 à 13:34
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 2010
-
25 nov. 2008 à 13:54
Bonjour,
j'ai une classe(T3) implementant l'interface runnable, cete classe utilise un objet d'une autre classe Compte1,
l'objectif est d'efectuer des retraits sur mon compte bancaire.
ça tourne, mais je ne comprends pas le fait que quand j'utilise deux threads qui opèrent sur un même objet de la classe Compte1, les retraits sont éffectués avec une certaine harmonie entre les deux threads(je veux dire que le dernier reprend le travail ou le premier la laissé!!)comme si j'avais rendu ma méthode retirer() syncronized, alors que ce n'ai pas le cas.
une autre question:
comme vous voyez sur le resultat, je n'ai pas les noms du threads que moi j'ai donné à mes threads, mais j'ai les noms :Thread-0, Thread-1 et je ne comprends pas !
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 25 nov. 2008 à 13:54
Salut,
C'est tout à fait normal ce que tu obtiens.
Tout d'abord, le nom du thread, tu affiches le nom du thread courant que tu n'as pas nommé, ce que tu passes en paramètres, c'est un nom de la classe T3, rien d'autre, si tu veux voir afficher le nom que tu as passé en paramètre, il te suffit de remplacer "Thread.getCurrentThread().getName()" par "nom" et voilà.
Ensuite, c'est tout à fait normal que les 2 threads soient en simultané, rien à voir avec un synchronized...
Regarde, à ton Thread T3, tu lui passes en paramètre la même instance de Compte1, donc forcément ils ont les mêmes attributs, enfin, le "c" est le même donc le solde est le même, tu vois?
Si tu veux exécuter le deuxième thread après et seulement après le premier thread, il te faut attendre l'exécution du premier thread, tout simplement en faisant un
t1.join();
qui a pour but d'attendre tant que le thread n'est pas terminé et ensuite, il continue le programme dans l'ordre.
Voilou
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...