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

  FORUM HardWare.fr
  Programmation
  Java

  partager de variable entre plusieurs threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

partager de variable entre plusieurs threads

n°1692307
Zoltan87
Posté le 25-02-2008 à 19:36:44  profilanswer
 

Bonjour a tous,
j'ai fais un programme java client/serveur :
il y a un serveur qui acceuille les clients, les clients emettent des demandes, qui sont alors stockées dans une file (elle meme stockées sur le serveur Accueil)
et il y a egalement un serveur Traitement qui se charge de consulter la file de demande et de traiter les demandes les uns apres les autres.
Le serveur Traitement doit donc accéder a la file de Demandes qui est sur le serveur Acceuil.
 
Cepandant j'ai un probleme : pour tester j'ai voulu faire une boucle sur le serveur Traitement qui affiche toutes les 10 secondes la taille de la file de la maniere suivante :
while(true){
  int i =Accueil.fileDemandes.taille();
  Thread.sleep(15000);
  System.out.println(i);
}
cepandant cela m'affiche toujours 0 alors que je suis sur que mon serveur Acceuil push bien dans la file lorsqu'un client emet une demande :
Accueil.fileDemandes.push(d);
 
pouvez vous m'aider s'il vous plait ?
la file est en public static sur le serveur Acceuil

mood
Publicité
Posté le 25-02-2008 à 19:36:44  profilanswer
 

n°1692685
frangelus
Posté le 26-02-2008 à 12:01:59  profilanswer
 

il faut que ta collection soit synchronisée
 
pour la création :

Code :
  1. Accueil.fileDemandes = Collections.synchronizedCollection(new Collection());


 
et pour y accéder, tu met un verrou, au lieu de "int i =Accueil.fileDemandes.taille();", tu met :

Code :
  1. int i;
  2. synchronized(Accueil.fileDemandes) {
  3.    i = Accueil.fileDemandes.size();
  4. }

n°1692692
Taz
bisounours-codeur
Posté le 26-02-2008 à 12:12:02  profilanswer
 

mauvais exemple avec size(), justement tu ne fais pas ça, puisque la collection est synchronized. Par contre, pour faire un ensemble d'opérations liées, tu fais un bloc synchronized


Message édité par Taz le 26-02-2008 à 12:12:49
n°1692796
Zoltan87
Posté le 26-02-2008 à 14:02:42  profilanswer
 

mon push et ma methode taille sont comme suit :
 
 public synchronized int taille()
 {  
  return lesObjets.size();
 }  
 
 public synchronized void push(E unObjet)
 {
  lesObjets.add(unObjet);
 }
 
je ne comprend pas, pourtant elles sont synchronized :(  
je suis vraiment "a la ramasse" :/


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

  partager de variable entre plusieurs threads

 

Sujets relatifs
plusieurs jointures sur une meme table ?Matcher une regex plusieurs fois
[MySQL] Problème avec Jointure ( et plusieurs COUNT sur même table)Remplacer plusieurs procédure par une seule dans un module
Select count de plusieurs champs sous accessPasser une variable C en Shell avec un system()
EXCEL VBA - Addition de cellule et de variable !Pb avec plusieurs form
Pb de passage de variableVariable et php
Plus de sujets relatifs à : partager de variable entre plusieurs threads


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