Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3011 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problèmes de variables communes à différents Threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problèmes de variables communes à différents Threads

n°1370254
marc90
Posté le 19-05-2006 à 08:49:25  profilanswer
 

Des variables communes à différents Threads ne sont pas reconnues.
 
Voici un extrait d'une classe client.
L'entier identifiant est mis pour etre accessible partout dans la classe.
Le constructeur prend en paramètre un entier: tour
La fonction run contient des conditions qui s'execute en fonction du parametre tour
Dans un premier temps la classe cré un client RMI
Puis si on est dans tour avec pour valeur 0, une valeur est affectée à identifiant.
Si on est dans tour valeur 1 ou tour une autre valeur on essaie de récupérer la valeur d'identifiant, mais ce n'est pas celle qui a été affectée.  
 
 
public class clientEchec extends Thread{
 
 private int tour;
 private int identifiant;
 private boolean dep;
 
 
 public clientEchec(int tour){
  this.tour = tour;
  this.start();
 }
 
 
 public void run()
 {
  try{  
   String parole;
   int val;
   
   client = (EchecRMI) java.rmi.Naming.lookup("rmi://localhost/EchecRMI1" );
   if(tour==0){
     identifiant = client.lancerPartie();
   }else{
    while(true){
     if(tour==1){
      System.out.println("Valeur d identifiant "+identifiant);
     }else{
      System.out.println("Valeur d identifiant "+identifiant);
     }
    }
   }
   }
  }
  catch(Exception ex){  
  System.out.println("Valeur de EchecRMI1 " );  
  }
 }
 
public static void main(String args[])throws Exception{
   clientEchec clEch0 = new clientEchec(0);
   clientEchec clEch1 = new clientEchec(1);
   clientEchec clEch2 = new clientEchec(2);
 }
}

Message cité 1 fois
Message édité par marc90 le 19-05-2006 à 08:51:59
mood
Publicité
Posté le 19-05-2006 à 08:49:25  profilanswer
 

n°1370311
post_it
Hmmmm!...
Posté le 19-05-2006 à 10:10:34  profilanswer
 

marc90 a écrit :

Des variables communes à différents Threads ne sont pas reconnues.

 



Bonjour !

 

Ben déjà, dans ton code, je ne vois aucune variable qui soit commune à différents Threads !...

 

Ensuite, que tu crées une instance de 'clientEchec' avec 1 ou 2 comme paramètre, la valeur d'identifiant n'est jamais initialisée (puisque 'tour' vaudra 1 ou 2, et pas 0).

 

Tu n'aurais pas oublié de mettre des données en static, par hasard ?

 

n°1370349
marc90
Posté le 19-05-2006 à 10:42:35  profilanswer
 

Pourquoi tour ne pourrait pas valoir 0?
 
La variable commune est: private int identifiant

n°1370395
post_it
Hmmmm!...
Posté le 19-05-2006 à 11:23:10  profilanswer
 

bah non justement, elle n'est pas commune puisque pas static.

n°1370401
marc90
Posté le 19-05-2006 à 11:26:57  profilanswer
 

Ha donc il faut mettre static int identifiant?

n°1370416
post_it
Hmmmm!...
Posté le 19-05-2006 à 11:36:08  profilanswer
 

Attention, là, il faut revoir tes bases en Java !
Quand tu fais une déclaration de variable 'int identifiant', cette variable est une donnée de l'objet, et chaque objet possède donc une variable 'identifiant' qui lui est propre et qui est distincte des autres.
Par contre, si tu fais 'static int identifiant', alors tu spécifies que la variable 'identifiant' est commune à tous les objets de la classe 'clientEchec'.  
Pour ce que tu veux faire, il faut que 'identifiant' et 'tour' soient static.

n°1370428
marc90
Posté le 19-05-2006 à 11:46:42  profilanswer
 

Exact par contre comme tour est un parametre est-ce necessaire de lui mettre static?

n°1370487
post_it
Hmmmm!...
Posté le 19-05-2006 à 12:58:55  profilanswer
 

Non, car les paramètres ne peuvent pas être mis en static.
 
Et pour une meilleure clarté de ton code, tu devrais éviter d'avoir un paramètre 'tour' qui porte le même nom qu'une donnée membre de la classe. Ce n'est pas strictement interdit, mais ça peut induire en confusion.

n°1370494
marc90
Posté le 19-05-2006 à 13:17:11  profilanswer
 

Faut il mettre aussi le client RMI en variable static?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problèmes de variables communes à différents Threads

 

Sujets relatifs
[RESOLU] Recuperer des variables avec la commande exec()Python: Exporter des variables dans le Bash ?
Problèmes de compatibilité avec IERécupération de variables en boucle
CSS - Problemes de blocs sous IEdesalouer variables post
Threads sur un serveur J2EE ? Thread en tant que Singleton?IE 7 et FF problèmes de position: absolute [RESOLU]
[php] récupération des noms de variablesFiltre sur formulaire et défilement avec des droits différents suivant
Plus de sujets relatifs à : Problèmes de variables communes à différents Threads


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR