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

avec Java Discussion :

Lancer un thread


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Lancer un thread
    Bonjour,

    J'ai une classe qui extend la classe Thread et qui implements l'interface MessageListener
    Dans cette classe j'ai donc une méthode run qui fait une connexion au serveur activemq et qui ensuite appel la méthode onMessage
    Mon problème est que le statut de mon traitement est null dans ma méthode run alors qu'il est pas null dans ma méthode on message à la fin du traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void run{
    public void lireMessage(){
    //Connexion au serveur Active MQ
    receiver.setMessageListener(this);
     
    System.out.println(traitement);
    }
     
    public void onMessage(Message message){
    //Traitement
     
    traitement = true
    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu peux donner ton code, pas des bribes grammaticalement incorrectes?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    J'ai donné les méthodes qui sont contenu dans la classe qui extends thread
    Il y a liremessage, on message et rubrique qui appelle liremessage

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    N'empêche, il est impossible de deviner l'enchaînement des appels (où est appelée lireMessage() par exemple, que fait run()...), les variables dont tu parles et leurs caractéristiques (scope, initialisation, synchronisation...), donc le fonctionnement de ton code et donc pourquoi il ne fonctionne pas, sans un code minimum.

    Il y a juste une chose qu'on peut éventuellement entrevoir c'est que ton System.out.println() n'affichera très probablement jamais la valeur affectée à traitement dans onMessage().
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par totot Voir le message
    J'ai donné les méthodes qui sont contenu dans la classe qui extends thread
    Non tu as donné 6 ligne qui n'ont ni queue ni tête.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    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
    public classe LireMessage extends Thread implements MessageListener{
    private boolean traitement;
    public void lireMessage(){
    //Connexion au serveur activeMQ
    receiver.setMessageListener(this); // Permet d'appeler la méthode onMessage
    }
     
    public void onMessage(Message message){
    //Traitement du message
     
    traitement = true;
    System.out.println("Traitement : "+traitement);
     
    }
     
    public void run(){
    lireMessage();
    System.out.println("Traitement : "+traitement);
    }
    }
     
    public class Principal{
    public void main{
    LireMessage lireMessage = new LireMessage();
    lireMessage.start();
    }
    Mon traitement reste à false dans run alors qu'il passe bien à true dans onMessage.

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu teste la valeur dans ton run immédiatement après avoir enregistré le listener. Les probabilités que la méthode onMessage aie eu le temps de s'exécuter sur les quelques nano secondes qui séparent tes deux instructions sont proche du néant. Le valeur ne passera à true que lorsque tu rentrera dans ton onMessage, chose que se passera dans une futur plus ou moins proche suivant la charge et la réactivité de la queue sur laquelle tu t'es enregistré.
    Au passage, tel que présenté, ton Thread ne sert à rien. Il ne fait aucune opération qui nécessiterais un Thread. Tu pourrais appeler directement lireMessage plutôt que démarrer un Thread qui ne fait que l'appeler.

Discussions similaires

  1. lancer un thread dans un thread
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 27/07/2007, 23h29
  2. Lancer un Thread
    Par abbd dans le forum C++/CLI
    Réponses: 3
    Dernier message: 19/07/2007, 18h21
  3. Lancer 2 thread consecutif.
    Par lil_k123 dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 18/04/2007, 12h38
  4. [VC++] Comment lancer un Thread
    Par ksoft dans le forum MFC
    Réponses: 5
    Dernier message: 30/05/2006, 14h19
  5. [Thread] Lancer un thread puis l'arrêter
    Par GLDavid dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 16/02/2006, 18h09

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