Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : les threads [ Divers / Débutant(e) ] (limalima)

samedi 22 novembre 2008 à 01:09:52 | les threads

limalima

Bonjour,
j'essai de faire un simple thread qui utilise une instance d'un compte bancaire pour y déposer de l'argent ou pour les retirer, mon solde de départ est de 100euros. mais je ne comprends pas après un retrait ou un dépot mon solde reste toujours le même, aidez moi merci. 

 

 

public

class T2 implements Runnable {

private

Compte c;

public T2(Compte c) {

this.c=c;

}

publicvoid run() {

c.deposer(10);

c.retirer(3);

}

publicstaticvoid main(String[] args) {

Compte c=

new Compte();

Thread t =

new Thread(new T2(c));

t.start();

System.

out.println("le solde est: "+c.affiche());

 

}

}
la classe compte:

package

threads;

public

class Compte {
privateint
solde=100;

publicvoid retirer(int n){

if (n>solde)

System.out.println("solde insuffisant");

solde=solde-n;

}

publicint affiche(){

returnsolde;

}

publicvoid deposer(int x){

solde=solde+x;

}

}




samedi 22 novembre 2008 à 02:18:10 | Re : les threads

anakin666

Réponse acceptée !
Salut, Vraiment très bizarre, apres copier/coller de ton code le résultats est le suivant : "le solde est: 107"

samedi 22 novembre 2008 à 02:38:48 | Re : les threads

anakin666

Réponse acceptée !
Bon, je viens de dire une betise, ton code marche en fait une fois sur deux. C'est le problème de base lié au multithreading. Le "System.out.println" s'execute parfois avant que ta nouvelle thread ait le temps de faire les opération sur ton compte. Essai exemple de déplacer l'affichage à la fin de la méthode "run()" et tu verra que le résultat est toujours 110. Pour remedier à ton problème, tu peux utiliser un par exemple un booléen qui fait office de sémaphore : public class T2 implements Runnable { private static boolean sem; private Compte c; public T2(Compte c) { this.c=c; } public void run() { c.deposer(10); c.retirer(3); sem = false; } public static void main(String[] args) { Compte c = new Compte(); Thread t = new Thread(new T2(c)); t.start(); sem = true; while (sem) { try{Thread.sleep(100);} catch(Exception e){} } System.out.println("le solde est: "+c.affiche()); } }



Cette discussion est classé dans : thread, compte, threads, retirer, solde


Répondre à ce message

Sujets en rapport avec ce message

Encore des Threads [ par Aldee ] Salut,J'ai qlq pb a interrompre un Thread. La methode interupt() ne donne rien. Par exemple, je lance un thread qui compte tout betement ds une boucle [applet][thread][Socket] Synchroniser 2 threads [ par adanis ] Bonjour,Je suis entrain de réaliser un applet qui lit et envoie un flux de données à un serveur via un socket je veux que mon applet reste tout le Afficher un List [ par jayjay77 ] bonjour je souhaite afficher tous les éléments d'un List (Arraylist)et ensuite avoir la possibilité d'afficher ce List en séléctionnant un critère de Afficher un List [ par jayjay77 ] bonjour je souhaite afficher tous les éléments d'un List (Arraylist)et ensuite avoir la possibilité d'afficher ce List en séléctionnant un critère de arreter une serie de thread [ par cuicui ] Bonjour a tous,J'ai creer une serveur attendant des connexions des clients grace à l'objet serverSocket.A chaque nouvelle connexion je lance un thread lancement de plusieurs threads pour affichage graphike [ par artichaud ] J'essaye de modifier mon moteur 3Dbon, en gros j'afficher une image, via des morceaux (des triangles) de cette image, pixel par pixel.Donc, autant pas Threads synchronises ? [ par kaliel ] SLT !Dans deux classes différentes, j'ai construit 2 Threads : 1>> Thread.currentThread().sleep(1000); 1 seconde 2>> Thread.current Communication entre thread [ par lamoufle ] Bonjour a tous,je souhaite faire " communiquer" des threads entre eux et je ne sais trop comment m'y prendre. J'explique mon probleme:mon prog est un Important : Un thread qui lance plusieurs threads [ par polly60 ] Salut,Voilà, j'ai un thread Launching qui appelle 10 fois une fonction startfunction(object) qui elle-même lance un autre thread Test.Donc ca fait dix PB multithreading [ par fab2308 ] Bonjour,j'ai un petit probleme de thread dans mon application multithreadé.J'ai plusieurs threads qui tourne en permanance : un thread en ecoute du re


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.