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] Problème de synchronisation


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre confirmé Avatar de Pe04
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Par défaut [Thread] Problème de synchronisation
    Bonjour a tous...

    Je veut creer un thread qui me servira de timer...
    Donc j ai developpe une classe Timer extends Thread
    dans une autre classe je cree un objet : timer=new Timer(); timer.start();

    jusqu ici tout va bien... tout ce passe comme prevu
    mais le probleme, c'est que je n arrive pas a l endormir. je fai un simul.wait()
    il me rend une execption en me disan ke je ne suis pas propriétaire.

    Je ne sait pas ce que je doit faire...

    Merci d avance de votre aide...

    PS : Je suis en ecole d ingenieurs en informatique, et c est pour un projet...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Pour l'endormir, c'est :

    timer.sleep(x); (x étant le nombre de millisecondes)

    la méthode sleep doit apparaitre à l'intérieur de try .... catch.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut
    bonsoir,
    comme dirait ardisson, quoique qu'y donne pas souvent l'exemple,
    appeller un chat un chat, un Timer c'est un Timer, il existait déjà, il existera toujours, jusqu'fau deprecated, ce qui m'étonnerait uuun peu...
    ce serait pas mieux si tu l'appelais autrement ta classe, si elle étend Thread, tu as bien une méthode Run(), dans celle-ci, tu mets un
    Tread.sleep(1000); pour l'endormir une seconde, par exemple, mais fouille un peu, récemment y'a eu plein de posts sur les Thread ici avec plein d'infos supra, mais faut pas débuter avec ç c'est un peu hard je trouve.
    A+

  4. #4
    Membre confirmé Avatar de Pe04
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Par défaut
    je connai deja sleep() mais ca ne me suffi pas. je voudrai le bloquer, sans connaitre lui donner de temps... Je voudrai le bloquer jusqu'a l arriver d une action specifique.

  5. #5
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    va lire le tutorial sur les threads de sun,
    tu comprendras vite ton erreur !
    http://java.sun.com/docs/books/tutor...ads/index.html

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut
    eh bien tant que cette action n'est pas survenu, il se rendort, quand il se reveille, si c'est prêt, il sort de la boucle qui l'endort...
    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Tu peux le faire executer en boucle une méthode qui ne fait rien, dès que la condition particulière change il sort de la boucle.

    Par ex : while (condition) { noOp(); }

    En anglais on appelle ça "to busy-wait"

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    Si le sleep ne te va pas tu devrais pouvoir faire un wait sur un objet partager avec d'autres thread , du coup ton thread serait en attente d'un notify sur l'objet partagé !!
    Mais attention au dead lock !!

  9. #9
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while(action_not_finished)
     Thread.yield();
    Thread.yield() donne la main à tous les autres threads.
    Sinon tu peux utiliser un sémaphore.

  10. #10
    Membre confirmé Avatar de Pe04
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Par défaut
    Sinon j ai utilisé les methodes suspend() et resume() ca permet de bloqué l application mais elle sont deprecated...

    C'est vraiment grave ou pas ?

  11. #11
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Citation Envoyé par Pe04
    Sinon j ai utilisé les methodes suspend() et resume() ca permet de bloqué l application mais elle sont deprecated...

    C'est vraiment grave ou pas ?
    Si l'anglais ne te rebute pas:

    Why Are Thread.stop, Thread.suspend,
    Thread.resume and Runtime.runFinalizersOnExit Deprecated?

  12. #12
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Avec Java 5.0 il est possible de faire cela très simplement en utilisant la nouvelle API de synchronisation et les locks conditionnels...

    Vous trouverez un exemple dans ce thread : http://www.developpez.net/forums/viewtopic.php?t=420793

    a++

  13. #13
    Membre confirmé Avatar de Pe04
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Par défaut
    Merci beaucoup...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/02/2010, 23h21
  2. [Thread][Synchronisation] Exclusion mutuelle
    Par masto dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 20/01/2005, 16h02
  3. [Débutant][Threads] Problème de synchronisation
    Par sephile dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 02/01/2005, 23h29
  4. Synchronisation entre 2 threads
    Par bodbod dans le forum C++
    Réponses: 8
    Dernier message: 20/08/2004, 18h29
  5. Synchronisation de thread
    Par declencher dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2004, 10h28

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