begin process at 2012 02 15 01:10:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

les threads


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

les threads

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ée 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,496 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales