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][synchronized] precision sur le verrou


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Par défaut [Thread][synchronized] precision sur le verrou
    bonjour,

    Je souhaiterais avoir une précision :
    J'ai un thread qui a des méthodes A, B, C
    Dans le run le thread utilise la méthode A
    La methode C utilise les méthode A et B
    De temps en temps je souhaiterais faire utiliser par un autre thread la méthode C
    Ce que je voudrais est que lorsque j'utilise C la methode A ne soit pas executé par un autre thread en l'occurrence dans le run.
    Est ce que le fait de synchronized C suffit pour bloquer l'ensemble des ressources utilisées lors de l'exécution de la méthode ?

    merci d'avance

  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
    Ce que je voudrais est que lorsque j'utilise C la methode A ne soit pas executé par un autre thread
    Alors il faut que C et A soient synchronized. Ainsi, il est impossible à deux threads d'utiliser simultanément l'une ou deux des méthodes.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Par défaut
    bonsoir et merci,

    j'ai oublié de dire que dans C, A intervenait plusieurs fois. Et je veux que C soit traité d'un seul coup.

    methode C ()
    {
    A();
    B();
    A();
    etc...
    }

    Pour être très claire, je ne veux pas que pendant l'appelle de B dans C un thread puisse executer A.
    D'après ce que j'avais compris avec synchronized je faisais un verrou obligeant à executer le bloc d'un seul coup. Autrement dit, que le bloc ne pouvait pas être séquencé avec d'autre thread.
    qu'en est il vraiment ?

  4. #4
    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,

    Citation Envoyé par moris113 Voir le message
    D'après ce que j'avais compris avec synchronized je faisais un verrou obligeant à executer le bloc d'un seul coup. Autrement dit, que le bloc ne pouvait pas être séquencé avec d'autre thread.
    qu'en est il vraiment ?
    Le bloc synchronized permet de mettre un verrou sur une instance pendant toute la durée du traitement du bloc. Tous les autres threads qui tenteront de poser un verrou sur cette même instance pendant ce temps seront bloqués et endormis afin d'attendre qu'il soit libéré.

    Il ne peut y avoir qu'un seul et unique thread dans un bloc synchronized basé sur une même instance.


    Par contre pendant le traitement du bloc, un autre thread pourrait très bien prendre la main (mais pas pour exécuter le bloc synchronized).

    a++

  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 moris113 Voir le message
    bonsoir et merci,

    j'ai oublié de dire que dans C, A intervenait plusieurs fois.
    çà ne change rien du tout. Si C et A sont synchronized, quand un thread est dans C, aucun autre thread ne pourra être dans A ni dans C. La synchronisation se fait au sein de l'instance contenant la méthode. Toutes les méthodes synchronized de l'instance partagent ainsi le même verrou.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Par défaut
    bonjour et merci,

    je crois que là c'est très claire.

    Merci et bonne journée.

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

Discussions similaires

  1. [Thread] Synchronize
    Par Pedro dans le forum Langage
    Réponses: 9
    Dernier message: 06/07/2004, 13h30
  2. Precision sur l'encodage de caractere
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/05/2004, 13h52
  3. besoin de precision sur gluLookAt!
    Par bakonu dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/04/2004, 19h05
  4. precision sur le pilotage du port parallele
    Par fransouik dans le forum C++Builder
    Réponses: 18
    Dernier message: 26/02/2004, 13h28
  5. [VBA-E]Demande de précision sur les menus
    Par geffdenimes dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/06/2003, 10h46

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