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 et synchronisation


Sujet :

Concurrence et multi-thread Java

  1. #1
    Invité
    Invité(e)
    Par défaut Thread et synchronisation
    Bonjour,

    Dans le cadre d'un exercice, je doit realiser ce genre de programme :
    - 2 type de thread (black et white) tente d acceder a une ressource
    - a un moment donner soit les thread white, soit les black peuvent acceder a la ressource (pas les deux en meme temp)

    Je doit coder 4 fonction, qui enleve ou donne le droit aux thread d acceder a la ressource (l acces a la ressource est simule par un sleep).

    J arrive a manipuler les threads en mode normal, mais je ne connait pas les technique de synchronisation, j ai lu pas mal de tuto, mais je ne trouve rien qui correspond a mes attente : permettre a une classe precise de se lancer a la place d un objet precis.

    Merci

  2. #2
    Membre éclairé Avatar de Akira
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 85
    Par défaut
    Citation Envoyé par Bourgui
    Je doit coder 4 fonction, qui enleve ou donne le droit aux thread d acceder a la ressource (l acces a la ressource est simule par un sleep).
    Ok je veux bien essayer de t'aider mais j'aimerais tout comprendre lorsque tu dis que tu dois coder 4 fonctions c'est deux sur chacun de tes Threads?

    A.

  3. #3
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    IL te suffit de faire :

    1) une fonction d'attente qui regarde si un thread est deja entrain de faire ce qu'il faut (déclaré synchronized).

    2) une fonction qui dit que le thread va etre executé (flag quelque part)(appelé par 1 si jamais personne n'utilise => inutile de la synchroniser vu que 1 est synchronizer et que 2 est appelé uniquement par 1. / sinon appelé après 1 en fonction du resultat mais je trouve ca plus dangereux et dans ce cas il faut la mettre synchronizer)

    3) une fonction qui va executé le traitement (synchronizer ou non tout depend ou tu l'appels)

    4) une fonction qui informe que le thread à fini son execution


    Voilà comment je vois ton probleme. Peut-etre que d'autre verrons autrement...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Desole je n ai pas ete tres precis, les 4 fonctions sont simple et sont dans la classe principale (y en a trois, en ajoutant les deux classes de thread) :

    donnerResourceAuWhite
    enleverResourceDeWhite
    donnerResourceAuBlack
    enleverResourceDeBlack

    VOila ... la tsouitsouin

    Par rapport a ta solution (tu permet que je te tutoie )

    Le probleme avec les methode synchronized c est que 2 objet ne peuvent y acceder au meme moment ... or moi je voudrai que2 instance de WhiteThread ou BlackThread puisse le faire.
    Dernière modification par Invité ; 14/03/2007 à 08h40.

  5. #5
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Pourtant tu as dit :

    - a un moment donner soit les thread white, soit les black peuvent acceder a la ressource (pas les deux en meme temp)

    DOnc soit je ne comprend pas ton truc soit les explications sont pas assez clair. Dans tous les cas faut que tu réexpliques, lol!

    Ta 2 ThreadWhite tB1, et tB2.
    Et 2 ThreadBlack, tN1 et tN2.

    On va dire que ce qu'ils doivent est "ecrire" => "run".
    Lesquelles peuvent faire ceci en meme temps?
    Est ce que les tb1 et tb2 peuvent ecrire en meme temps?
    Est ce que tb1 et tn1 peuvent ecrire en meme temps?

  6. #6
    Invité
    Invité(e)
    Par défaut
    tb1 et tb2 peuvent ecrire en meme temp
    tn1 et tn2 aussi.

    mais

    tb1 et tn1 ne peuvent pas.

  7. #7
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Et tu ne dois avoir que 4 methodeS??

    Parce que comment les threads vont savoir a qui c'est de prendre la main si il n'y a pas de méhode synchronized qui enleve le droit ou met le droit au thread??

  8. #8
    Invité
    Invité(e)
    Par défaut
    Non je peut avoir d autre methode, mais ils doit y avoir ces 4.

    J ai vu le fonctionnement du mot cle synchronized.En gros quand un thread arrive a une methoe ou y'a ce mot clef, il "regarde" si un thread est deja dedans, si y a personne il entre, sinon il attend (c'est come les toilettes en gros).

    Moi je voudrais juste savoir comment les threads a plusieur dans une methode du moment qu'ils sont de la meme classe.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Un up, mais j'ajoute de mouveau elements ...

    Voila j'ai reussi a faire presque ce que je veut , mais j'ai une question :


    comment depuis un thread dison T1, je peut mettre un Thread T2 en etat d'attente ?

    Paske si j'ai bien compris, si depuis T1 je fait T2.wait() en fait c est T1 qui va dans l'etat d'attente ...

    En gros, je me demande comment controler l'etat de T2 depuis T1...

Discussions similaires

  1. [Stratégie] Thread et synchronisation
    Par Sphax dans le forum Général Java
    Réponses: 4
    Dernier message: 13/11/2007, 11h34
  2. Threads et synchronisation
    Par divxdede dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 25/09/2007, 14h26
  3. créer Thread et synchronisation C et VB
    Par storm_2000 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 20/01/2007, 12h49
  4. [THREAD] Problème synchronisation
    Par goddet dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/10/2006, 09h16
  5. [JNI] Class Thread et Synchronisation
    Par SteelBox dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/02/2006, 23h40

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