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 :

probleme avec [#document: null] et multi-thread


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut probleme avec [#document: null] et multi-thread
    Bonjour,

    J'ai un serieux soucis ...

    Il y a plusieurs jour j'ai modifié un code type qui permet d'importer et d'exporter des fichiers xml, cette modification consistait à ce qu'au bout d'un moment si il n'y a pas de reponse du serveur ça affiche un message et ça quitte l'execution. J'ai du passer par un multi-thread. Le code qui devait faire la connection avec le serveur était placé dans le run() d'une classe testThread.
    La modification à marchée je pouvais exporter :]
    Le serveur ne marchant pas durant 3 à 4 jours et sachant que l'export-export marchait je ne me faisait plus de soucis quant à mon code.
    Cependant, ce matin le serveur étant remis sur pied, je re-test mon code et ça ne marche pas... J'ai aussitôt vérifié avec l'ancienne methode (sans multi-thread ni "timeout") et ça fonctionne...

    J'ai effectué des affichages dans tout le code concerné pour savoir d'où provenait l'erreure et je me suis rendu compte que lorsque j'utilisais le multi-thread, la variable importante qui devait etre modifiée dans le run() était bien modifié MaVariable = [#document: null] (affichage console) mais lorsque l'on quitte le run() la variable est revenue à null MaVariable= null.

    Ce qui fait que le code ne s'effectue pas comme il le faudrait par la suite...

    donc je ne pense pas que le serveur y soit pour quelque chose mais je ne comprend pas non plus pourquoi ça marchait avant (à moins que je ne me sois trompé, et pourtant je suis persuadé de ce que je dis)

    Merci donc pour ceux qui voudrait bien me filer un coup de pouce.

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Bon... j'ai du mal à tout comprendre mais bon ...
    J'ai ressayé de faire le decompte sans multi-thread, donc directement dans la classe principale et avec le code de liaison avec le serveur. Maintenant ça marche...
    Le probleme est qu'avant ça ne marchait pas et c'est pour ça que j'ai dû utiliser le multi-thread. mmhh je comprend vraiment plus grand chose, suis-je encore en train de rêver ?!

    Bref si vous connaissez la solution à mon probleme précédent je suis toujours preneur :]

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Essaie de voir par là:
    http://java.developpez.com/faq/java/...tsClesVolatile

    Ou sinon tu as peut être une redéfinition locale de ta variable dans ton thread qui fausserait son scope.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Merci Sinok

    Je vais aller faire un tour sur ton lien :]
    Autrement je pensais comme toi aussi, mais non je n'ai pas de redéfinition locale donc c'est pour ça que je ne comprend pas.

    Merci en tous cas

    Cordialement,

    Zouc

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Bon j'ai réussi à me dépatouiller et ça fonctionne

    le souci ne venait pas du serveur (cela dit je ne comprend toujours pas pourquoi ça marchait avant et plus aprés...)
    Le probléme est que je n'avait pas appréhendé correctement le bon fonctionnement du multi-thread. Je sais maintenant que le thread appelé à une mémoire temporaire interne. C'est à dire qu'une fois thread.interrupt() appelé, les variables du run() n'existe plus.
    Pour y remedier j'ai du simplement initialiser quelques variables dans mon Main.class en tant que "public static" au début de mon code et non plus juste dans ma fonction qui appelé mon thread exterieur. Ansi, dans le run() vous assignez le contenu que vous voulez dans ces variables tel que "Main.MaVariable = LeContenuQueJeVeux" .
    Voila
    En esperant que ce topic puisse aider certains si ils ont le même soucis (au mieux ça n'aide personne car personne ne cette une erreure)

    Cordialement,

    Zouc

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

Discussions similaires

  1. problem avec context null
    Par Elise49 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 17/04/2009, 10h42
  2. probleme avec un Form dans un Thread
    Par cyrille37 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/02/2008, 11h45
  3. probleme avec document.write
    Par Alex35 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/04/2007, 14h23
  4. Problème avec "document.getElementById"
    Par kuja2053 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/11/2006, 21h04
  5. Probleme avec document.write()
    Par bins dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 11/11/2005, 18h27

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