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 :

Thread associé à un Objet


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut Thread associé à un Objet
    Bonjour,
    mon programme présente une classe comportant plusieurs méthodes synchronized. Plusieurs threads font des appels à ces méthodes mais, forcément, un seul a réellement obtenu le verrou. J'aimerais que ce thread (celui actif, donc) puisse interrompre les autres threads.

    j'imagine qu'il me faut trouver la liste des Threads t bloqués et agir avec t.interrupt(). Avez-vous une idée de comment obtenir cette liste ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    salut
    Tu n'a pas besoin d'interrompre les autres thread puisque c'est fait automatiquement lors de l'appel de la méthode synchronized car un thread et un seul peut appeler la méthode en question à un moment T. Si tu veux empêcher tout les thread dès que l'un d'eux accède à une méthode synchronized déclare ta méthode plutôt comme ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public XX maMethode(...) {
      synchronized(this)  {
          //...
      }
    }

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Tu peux énumérer tes thread à condition qu'ils soient dans un même groupe via enumerate() de la classe ThreadGroup. Et tu peux obtenir leur état via getState de la classe Thread(depuis java 1.5).

    Mais je doute également que ce que tu propose soit une bonne solution.

    Si tu veux empêcher tout les thread dès que l'un d'eux accède à une méthode synchronized déclare ta méthode plutôt comme ci dessous: ...
    Tu est sur? Je croyais que une méthode synchronisée était l'équivalent ce ce que tu proposes.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Citation Envoyé par Uther Voir le message
    Tu est sur? Je croyais que une méthode synchronisée était l'équivalent ce ce que tu proposes.
    Oui c'est vrai que c'est équivalent même si le compilateur ne génère pas le même byte code pour les 2 méthodes.

Discussions similaires

  1. Treeview: associé un objet à chaque Item ?
    Par TSalm dans le forum Framework .NET
    Réponses: 2
    Dernier message: 29/10/2007, 16h57
  2. [Thread] Partage d'objet
    Par femtosa dans le forum Langage
    Réponses: 6
    Dernier message: 06/09/2007, 16h48
  3. [Boost.Thread] modifier un objet
    Par poukill dans le forum Boost
    Réponses: 9
    Dernier message: 26/08/2007, 12h31
  4. Association entre objet Id ou référence ?
    Par grosFab dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 19/04/2007, 13h41
  5. [debutant] run() dans l'objet thread ou l'objet cible ?
    Par slim dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 18/01/2006, 23h06

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