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

avec Java Discussion :

[thread] question réthorique :


Sujet :

avec Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 149
    Par défaut [thread] question réthorique :
    bonjour,

    j'ai une méthode main qui crée un thread, qui comporte une méthode A()
    (la méthode run() est vide.)
    je start() mon tread, et dans mon main, je fais un appel à A().
    j'ai un doute sur la parralèlisation ainsi effectuée.

    Ca marche quand même ?

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Non le code qui s'exécutera en parralèle est seulement celui qui se situe dans la méthode run

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 149
    Par défaut
    ouinnnn

    Merci de ta réponse, j'ai éviter de faire un boulette !
    dommage, sur la papier c'est si beau, enfin...

    NINJAEDIT :
    donc si j'appelle la méthode run() ca marche du coup ?

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    non en fait le .start() appelle directement la méthode run...
    pas besoin d'appeler celle ci.
    Par contre l'appel à ta méthode A doit être appelée dans le run pour qu'elle soit exécutée

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 149
    Par défaut
    Voila mon intérêt : j'aimerais faire tourner un thread, puis une fois qu'il a terminé, vérifier un ensemble de propriété, lui donner un paramètre et relancer son exécution.

    Donc, je le start() la première fois, après avoir setPropriété().
    une fois l'exécution terminée grace à un appel par le thread à terminer() qui est dans ma classe main, je stop() le thread ? pour lui refaire un setPropriété() et lui refaire un start() ?

    si tu as suivi bravo

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par d_token
    Voila mon intérêt : j'aimerais faire tourner un thread, puis une fois qu'il a terminé, vérifier un ensemble de propriété, lui donner un paramètre et relancer son exécution.

    Donc, je le start() la première fois, après avoir setPropriété().
    une fois l'exécution terminée grace à un appel par le thread à terminer() qui est dans ma classe main, je stop() le thread ? pour lui refaire un setPropriété() et lui refaire un start() ?

    si tu as suivi bravo
    Déjà, un Thread, ça ne se stoppe pas : il finit une fois que le run() a fini son exécution. Tu peux "attendre" un thread avec la méthode join();

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 149
    Par défaut
    donc, une fois que run() est terminé, le thread se tue ?
    en gros, je n'ai plus qu'à en instancier un autre ?

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par d_token
    donc, une fois que run() est terminé, le thread se tue ?
    en gros, je n'ai plus qu'à en instancier un autre ?
    Il ne faut pas confondre la classe Thread et thread (processus léger)...
    La relation entre les deux est que si tu exécutes la méthode .start() d'un Thread, ça crée un nouveau thread qui exécute la méthode .run() de ton Thread...

    Mais bon, normalement, on ne lance .start() qu'une seule fois (c'est écrit dans la doc)...

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    on ne peux pas appeler deux fois start. Si tu veux une classe a exécuter plusieurs fois, je te recommande d'écrire une classe implémentant l'interface "Runnable". Ensuite, pour chaque démarrage, tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MonRunnable r = new MonRunnable();
    r.setProprietes(....);
    new Thread(r).start();
    // attendre fin d'une manière ou d'une autre
    r.setProprietes(....);
    new Thread(r).start();
    // attendre une nouvelle fois la fin
    // etc...

Discussions similaires

  1. Serveur multi thread - Question pratique
    Par jo7714 dans le forum C
    Réponses: 6
    Dernier message: 05/12/2012, 22h41
  2. Thread / Questions
    Par ihih45 dans le forum WinDev
    Réponses: 6
    Dernier message: 24/10/2011, 23h49
  3. Les threads ( question )
    Par klakman dans le forum Langage
    Réponses: 10
    Dernier message: 28/07/2009, 18h37
  4. Boost.threads : questions sur le TimedLockable Concept
    Par raphael_kindt dans le forum Boost
    Réponses: 4
    Dernier message: 22/08/2008, 13h02
  5. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 14h59

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