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] Invocation méthode pendant un certain temps


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut [Thread] Invocation méthode pendant un certain temps
    Salut ,

    Je souhaite exécuter une méthode JAVA : maMETHODE pendant un certain temps.
    Je pense utiliser pour cela un thread...

    Comment faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    public class TOTO implements Runnable{
     
      private double temp = 300000;    // 5 min = 300000 ms
     
      public TOTO(){
     
      }
     
      public void run(){
     
        //redéfinition méthode run
        invocation méthode maMethode pendant 5min par exemple
     
      }
     
      public void maMethode(){
     
      }
     
    }
    Merci
    "Patience et longueur de temps font plus que force ni que rage ..."

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    bonjour,
    pet etre tu pourrais faire un second thread, (type timer) qui une fois terminer va stopper l'autre thread...
    "vaste programme"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    Comment doit se faire le premier déjà ?
    "Patience et longueur de temps font plus que force ni que rage ..."

  4. #4
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Le premier?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Toto toto = new Toto();
    toto.start();
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    oui mais pour que ma méthode maMethode soit invoquee plusieurs fois après le lancement ???
    "Patience et longueur de temps font plus que force ni que rage ..."

  6. #6
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Plusieurs fois par différents threads?... Tu peux relancer un thread dans ton run non?
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    non je veux que maMethode soit invoquée pendant 5 min.
    Il s'agit d'une méthode qui scrute un répertoire. Or si je la lance telle quelle, elle regarde ds le répertoire, exécute son traitement et s'arrete.

    Or je veux qu'elle puisse scruter dans le répertoire continuellement (je voudrais aussi éviter un truc du genre while(true))

    Donc je souhaiterais le faire avec un thread mais je ne sais pas comment
    "Patience et longueur de temps font plus que force ni que rage ..."

  8. #8
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Tu connais la notion de Thread démon? C'est un Thread qui lance a la tâche de lancer un thread quand tu le désires

    Ou alors plus simplement directement utiliser un Timer à mon avis...

    Citation Envoyé par http://java.sun.com/docs/books/tutorial/uiswing/misc/timer.html
    You can use Swing timers in two ways:

    To perform a task once, after a delay.
    For example, the tool tip manager uses Swing timers to determine when to show a tool tip and when to hide it.
    To perform a task repeatedly.
    For example, you might perform animation or update a component that displays progress toward a goal.
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  9. #9
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,
    Ce que je ferais :
    - dans le run : while(!timeElapsed) ...
    - lancer un Timer dont la fonction est de mettre ce booleen timeElapsed à true

    [EDIT] La méthode doit etre invoquée pendant 5mn ou toutes les 5mn ?
    Pendant -> voir ma proposition
    Toutes les -> voir le message précédent
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    Pendant 5 min

    Par contre si je fais

    While(!timeElapsed){

    // invoque ma Méthode

    }

    Est ce que je ne risque pas d'exécuter la méthode en parallèle plusieurs fois. Comment faire pour être sûr que maMéthode est terminée avant de la relancer ?

    Synchronisation ?
    "Patience et longueur de temps font plus que force ni que rage ..."

  11. #11
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Dans ce cas, la meilleure manière de faire est celle que je t'ai indiqué.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  12. #12
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Est ce que je ne risque pas d'exécuter la méthode en parallèle plusieurs fois. Comment faire pour être sûr que maMéthode est terminée avant de la relancer ?
    Au sein d'un thread toutes les operations sont sequentielles, c'est une des garanties du langage (sinon ca rendrait la programmation multitache abominablement difficile, voire impossible). Donc ta methode ne sera jamais executee deux fois en meme temps *tant que* tu n'as qu'un seul thread qu l'execute.
    Romain Guy
    Android - Mon livre - Mon blog

Discussions similaires

  1. afficher une image pendant un certain temps sur une page
    Par fraizas77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/06/2009, 16h53
  2. Autorisation d'accès pendant un certain temps
    Par alex5512 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/03/2009, 11h55
  3. Comment afficher un message pendant un certain temps ?
    Par potili2 dans le forum Débuter
    Réponses: 4
    Dernier message: 16/01/2008, 11h08
  4. Afficher pendant un certain temps un popup menu
    Par dahu29 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 30/05/2006, 14h27

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