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

Java Discussion :

probleme de traitement sequentiel des instructions


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut probleme de traitement sequentiel des instructions
    Bonjour!

    je travaille en ce moment sur un logiciel de gestion de stock et de commande pour une entreprise en utilisant swing.
    C'est en gros un logiciel qui gere une base de donnée de maniere transparente pour l'utilisateur .(base de donnée utilisée:Access).
    Sur plusieurs fonctionnaliés j'a eu des problemes que je n'arrive pas à expliquer!
    Par exemple, la table Stock contient les champs: produits,quantité initiale,quantits commandés, quantités restantes,prix coutant, prix vente, cout,recette ,benefice.
    A chaque nouvelles commandes enregistrés depuis l'interface, les champs commandés, cout ,recette, et benefice sont mis à jour.
    Avec un prix fixe, la formule cout ,recette est simple mais comme mon logiciel permet de changer de prix ,la formule est un peu plus compliqué(bien que pas trés sorcier):
    cout=((somme de i=1 à n-1) (C(i+1)-C(i))*p(i)) +(C -C(n))*p(n)
    C(i):niveau de commande au ieme changement
    p(i):prix au ieme changement
    C:niveau actuel de commande
    pour que le logiciel se souvienne des C(i):p(i) j'ai crée deux tables cout et recettes.

    Le probleme le voici:
    dans la methode actionPerformed(ActionEvent evt), deux instructions censés etre traités de maniere sequentiel: une qui ajoute le nouveau prix à la table stock, l'autre qui enregistre le couple C(i):p(i) aux tables cout et recette.
    Il est evident que la premiere instruction dot avoir terminée pour que l'autre puisse enregistrer le bon prix aux deux tables.
    Mais voilà la deuxieme m'enregistre le prix avant changement, ce qui fausse bien evidemment le calcul.
    J'ai utilisé des Threads avec verrou sur l'objet Sqlconnect(contenant les methodes selectionner, ajouter etc.), rien n'y fait!
    J'ai fnalement contourné le probleme en integrant les instructions enregistant les prix dans un autre cadre et là c bon!

    Quelqu'un aurait une explication?
    Serait ce Access qui recoit les requetes mais ne les traite pas dans l'ordre où il les a recu ou est ce un probleme Java?

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quand tu dis, "deux instructions censés etre traités de maniere sequentiel", c'est 2 méthodes que tu veux dire (je suppose) ?
    Est-ce que par hasard, la première utilise une transaction et pas la deuxième (auto-commit = true) ?

    Sinon, les Threads font quoi ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Il y a un truc qui est certain c'est que les deux méthode que tu appel dans ton evenement son executer de manière sequentiel. apres reste a savoir si par exemple ces deux méthode crée chacune un thread de traitement alors en effet tu ne peux pas etre sur que la premiere méthode soit acomplie complètement avant que la deuxieme méthode soit appelée.
    Après tout depend de ce que tu appel lors de la gestion d'evenement.

    ++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Citation Envoyé par guis14
    Il y a un truc qui est certain c'est que les deux méthode que tu appel dans ton evenement son executer de manière sequentiel. apres reste a savoir si par exemple ces deux méthode crée chacune un thread de traitement alors en effet tu ne peux pas etre sur que la premiere méthode soit acomplie complètement avant que la deuxieme méthode soit appelée.
    Après tout depend de ce que tu appel lors de la gestion d'evenement.

    ++
    Merci pour ta réponse.
    Quand tu dis que les eux methodes creent chacune un thread de traitement, tu veux dire, de maniere transparente, par la machine virtuelle java?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Citation Envoyé par OButterlin
    Quand tu dis, "deux instructions censés etre traités de maniere sequentiel", c'est 2 méthodes que tu veux dire (je suppose) ?
    Est-ce que par hasard, la première utilise une transaction et pas la deuxième (auto-commit = true) ?

    Sinon, les Threads font quoi ?

    A+
    Les deux méthodes utilisent une transaction.

    J'ai essayé les Threads et rien n'y fait malgré le verrou sur l'objet!

  6. #6
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Est ce que les deux méthode que tu appel sont dans le meme thread ou pas ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Citation Envoyé par guis14
    Est ce que les deux méthode que tu appel sont dans le meme thread ou pas ?
    Non ,une thread par methode.Les deux methodes étant du meme objet, j'applique un verrou sur l'objet.Le premier thread deverouille l'acces à l'objet une fois avoir été executé, permettant ainsi au deuxieme de s'executer.
    Bizzarrement quand le deuxieme s'execute ,il recupere des données de la table avant la mise à jour effectuée par le premier thread!

    A mon avis cela doit venir de la gestion d'access qui doit enregistrer les requetes et les executer dans le desordre.

    Je ne vois que cela comme reponse!

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je pencherais plutôt pour une transaction (1ère méthode) qui commit après l'exécution de la seconde méthode.
    Tu peux montrer tout le code (appelant + objet.methode1 + objet.methode2) ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    essai egalement de déclarer les variable auxquelles tu accède dans avec les deux thread en utilisant le mot clé "volatile"

    ++

  10. #10
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Si le code est appelé dans des actionPerformed, pas besoin de synchroniser en Java (c'est forcément séquentiel).

Discussions similaires

  1. [XSLT] Traitement sequentiel des balises differentes
    Par SkyBack dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/11/2009, 13h54
  2. Réponses: 6
    Dernier message: 04/04/2003, 15h28
  3. Probleme sur le Fields des fichiers Xmlgram
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 4
    Dernier message: 20/03/2003, 17h09
  4. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  5. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51

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