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] Exécution de code prioritaire


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] Exécution de code prioritaire
    Bonjour,

    J'ai un crée un thread qui lance plusieurs thread daemon.
    Après avoir lancé les threads enfants, j'appelle la méthode sleep() pour le thread père.
    A la fin du sleep la main est rendue au thread principal. J'aimerai qu'une méthode s'éxécute entièrement sans que la main soit rendue aux threads démons.
    J'ai essayé de donner une priorité supérieure au thread principal mais pendant l'exécution de la méthode un des threads démons s'éxécute.

    Comment faire ?
    Merci pour vos réponses

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Tu peux utiliser des primitives de synchronisations (une barrière me semble indiqué).
    Pourquoi as-tu besoin que cette méthode soit exécutée sans que les démons ne s'exécutent ?

  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
    Bonjour,

    Merci de ta réponse.
    Excuse moi de répondre si tard.

    En fait cette méthode est la dernière à s'éxécuter dans mon programme. J'aimerai arrêter les threads daemons mais le code de la méthode run() est trop complexe (nombreux blocs try...catch imbriqués) pour insérer un booléen de test pour continuer (solution préconisée pour contouner la méthode stop()).

    Je me suis dit que la solution était de fermer le dernier thread client pour que mon programme se termine. Mais les dernières lignes de code ne s'éxécute pas en un seul bloc. D'où ma question.

    En fait je suis assez étonné que la gestion des priorités n'ait pas plus d'impact. Je précise que je suis sous Windows 2000.

  4. #4
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Ah ok.
    Jette un oeil sur la méthode "join" de la classe Thread.
    J'aimerai arrêter les threads daemons mais le code de la méthode run() est trop complexe (nombreux blocs try...catch imbriqués) pour insérer un booléen de test pour continuer (solution préconisée pour contouner la méthode stop()).
    Simplifie la avec des appels à des méthodes privées...

  5. #5
    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
    Le problème c'est que l'appel de la méthode join dans un thread n'empêchera pas les threads lancés avant de s'exécuter. Je me trompe ?

  6. #6
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    "join" permet d'attendre la terminaison d'un thread.
    Donc :
    1. tu simplifies le code de run
    2. tu stoppes les démon (avec un boolean)
    3. tu appelles "join" sur les démons pour attendre qu'ils se terminent

    Ca te convient ?

Discussions similaires

  1. Réponses: 44
    Dernier message: 02/08/2006, 16h12
  2. Erreur 3141 dans exécution de code
    Par zoom61 dans le forum Access
    Réponses: 13
    Dernier message: 23/03/2006, 17h31
  3. [RosASM] Tracer l'exécution du code
    Par aumeunier dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 14/03/2006, 18h26
  4. Réponses: 3
    Dernier message: 20/04/2005, 12h30
  5. Réponses: 7
    Dernier message: 03/02/2005, 17h20

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