IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

[Thread] Modifier objet static depuis thread


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut [Thread] Modifier objet static depuis thread
    Bonjour,
    J'ai un problème avec l'actualisation de donnée avec un thread.

    Trés grosso modo mon programme est construit comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Class Principale{
     
    public static int variable_A_actualiser_Depuis_thread1 =0;
    public void lanceThread(int entier)
    {
         Thread Thr1 = new Thr(entier);
         connThr.start();
    }
    public static void main[...]{
    Principale principale = new Principale();
    principale.lanceThread(variable_A_actualiser_Depuis_thread1);
    }
     
    }
    /////
     class Thr extends Thread
     {
      public Thr (int entier)
      {
        _entier=entier
      }
      public void run ()
      {//traitement sur l'entier
        _entier++;
      }
     private int _entier;
     }
    Le problème c'est que la variable ne semble pas changée.
    Donc, est-ce que "_entier" que je modifie dans le thread, modifie aussi "variable_A_actualiser_Depuis_thread1" ? Aurai-je dû passé "variable_A_actualiser_Depuis_thread1" par refernce au thread (si oui je sais pas comment faire)?

    J'espere que c'est pas trop confu .

    Merci !

    NB: je n'ai pas mis le vrai code car c'est un peu le "bordel"
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

  2. #2
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    Je ne suis pas familier du multi-threading mais les différents threads tourne dans la meme jvm non ?

    donc est-ce que tu ne pourrait pas manier partout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Principale.variable_A_actualiser_Depuis_thread1
    plutot que de faire des copies d'int partout. Surtout qu'elle est en static...

    quoi qu'il en soit, quand tu manipules les types natif, ils sont toujours passer par valeur donc agir sur l'un ne modifiera jamais les autres... (je ne sais d'ailleur pas comment est gérer ce genre de chose avec l'autoboxing de la 1.5 mais puisque tu es en 1.4)

  3. #3
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div style="text-align: left;">Principale.variable_A_actualiser_Depuis_thread1</div>
    oui j'ai pas essayé .
    En fait je viens tout juste de me mettre au moteur 2d GTGE, et la façon dont on doit instancier l'objet de la classe principale est differente de ce que j'ai vu jusqu'a présent (ok j'suis un petit amateur en programmation ). En fait dans ma classe Principale, il n'y a pas la ligne:
    "Principale principale = new Principale();" mais un truc qui n'a rien à voir du genre: "Gameloader test = new Gameloader(); test.start();"...
    Donc il ne semble pas qu'il y ai d'objet de type Principale de créé !(?)
    C'est pour ça que je me demande si
    Principale.variable_A_actualiser_Depuis_thread1
    marchera (en ce moment je ne peux pas tester, je te dirai ce w-e).
    En tout cas merci pour ta réponse @ldehan !

    (au fait, je comprends pas pourquoi, ce thread est en double !)
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

  4. #4
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    Si ta variable "variable_A_actualiser_Depuis_thread1" est vraiment en static tu peux y acceder de partout avec le non de la classe (c'est tout l'interet).

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Principale.variable_A_actualiser_Depuis_thread1
    devrait marcher.

  5. #5
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    ok merci je pense que ca le fera.
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'objet depuis Thread
    Par grunk dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/09/2011, 11h39
  2. Accès à une méthode static depuis un thread
    Par fantomchris dans le forum MFC
    Réponses: 7
    Dernier message: 08/07/2009, 18h05
  3. [Boost.Thread] modifier un objet
    Par poukill dans le forum Boost
    Réponses: 9
    Dernier message: 26/08/2007, 12h31
  4. Serialisation, thread et objet modifiable
    Par yozart dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 25/05/2007, 10h26
  5. [C#] Instancier un objet Form depuis un Thread
    Par Philipili dans le forum Windows Forms
    Réponses: 10
    Dernier message: 13/05/2006, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo