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]Lancer mon programme toutes les 60 secondes?


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Points : 49
    Points
    49
    Par défaut [Thread]Lancer mon programme toutes les 60 secondes?
    bonjour,


    alors voila, je viens de finir mon programme, et j'aimerai que celui-ci se relance tout seul toutes les 60 secondes.

    Pour le moment, il ne s elance qu'une fois, car je n'est pas de boucle dans mon main.

    Donc j'aimerai faire une boucle, qui fasse en sorte que la méthode que j'appel dans mon main se relance toutes les 60 secondes.

    J'ai vu qq chose avec les timer mais rien de concluant.

    De plus, j'aimerai pouvoir arréter ce programme avec une combinaison de touche, et ça non plus je sais pas encore comment faire.


    Merci

  2. #2
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    non malheureux, c'est pas une boucle ce qu'il faut faire mais plustot un thread
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Bidon extends Threads {
    int periode = 60000; //periode doit etre en millisecondes
    public Bidon() {};
    public void run() {
    System.out.println("bidon");
    try {sleep(periode);} catch(InterruptedException e) {};
    }
     
    public static void mains(String[] argv) {
    this.start();
    }
    }

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Points : 150
    Points
    150
    Par défaut
    regarde cela ça devrait t'aider pour le timer.
    ne ré-inventez pas la roue, allez chercher dans les Commons de Jakarta

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Je pense tu trouveras ce qu'il te faut la :
    http://grisha.developpez.com/tutoriel/java/scheduling/
    UML avec VIOLET

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    Merci a vous, j'utilise cette methode:

    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
    23
    24
    25
    26
    27
    28
     
       public static void main(String[] args){
    		int n=1;
            while(true) {
    	        try {
    				Thread.sleep(n);
    				}
    	        catch (InterruptedException ie) { }
    			n=10000;
    			if ( args.length != 1){
    				System.out.println("Syntax: java Topology -URL");
    			} else {
    				//Call the parser to obtain all Topology objects
    				TopologyToParseHTMLFile parseit = new TopologyToParseHTMLFile(args[0]);
    				Vector<Vector> resultofparsing = new Vector<Vector>();
    				resultofparsing= parseit.parseFile();
    				//Now if we have all Topology Object, we can draw the Topology
    				if (resultofparsing != null){
    					TopologyDraw topologydraw = new TopologyDraw(resultofparsing.get(0), 
    							resultofparsing.get(1), resultofparsing.get(2),
    							resultofparsing.get(3), resultofparsing.get(4));				
    					System.out.println("Operation successfully complete");
    				} else {
    					System.out.println("Error, can't obtain the network topology!!");
    				}
    			}	      
           }
       }
    Cependant, j'ai 2 question.

    Ext-ce une bonne façon de faire?

    Et est-ce que le fait d'utiliser n et de changer sa valeur apres est aussi une bonne façon de faire?

    Car ce que je veux c'est que mon programme démarre des le debut du lancement de main. D'ou N=1, et que apres c'est toutes les 60secondes d'ou N=60000

    Enfin, comment faire pour arrété le programme avec une combinaison de touches??

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par danje
    Enfin, comment faire pour arrété le programme avec une combinaison de touches??

    THE question: Heu...une fois que j'ai lancé une boucle infinie...comment j'arrette ce monstre ?

    ok, ok, je sors...

    Je trouve simplement curieux d'y penser maintenant...
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    Ecoute, si j'ai mis une boucle infini c'etait pour tester le Thread, c'est tout.

    Tu fais comment toi tu programme toujours tout ton code d'affilé MONSIEUR le gourou.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Je pense que l'idée serais de faire de ton traitement regulier un Thread demon et de faire du thread principale un KeyListener qui lorsqu'il detectera la bonne combinaison de touche s'arretera du coup le demon s'arreteras aussi !!
    UML avec VIOLET

  9. #9
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par danje
    Tu fais comment toi tu programme toujours tout ton code d'affilé MONSIEUR le gourou.
    Non, mais j'aurais cherché à démarrer, et arretter mon appli avant de lancer une boucle et me demander comment l'arretter...
    Mais ne le prend pas mal, cela m'a juste surprit.
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    Je savais bien que je ne bloquerai rien avec cette boucle infini puiseque j'ai 7 seconde pour arréter l'application. Donc c'est pas du bouclage intensif.

    Maintenant pourl'idée du daemon je vois pas vraiment ce que tu veux dire FreshVic o^O

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Et bien il existe deux type de thread les deamon et les autres (je sais pas si ils ont un nom) lorsqu'un programme java est composé de plusieurs thread principaux (on va les appeler comme ca) , le programme ne s'arrete que lorsque le dernier thread principal encore en activité s'arretent, par contre si cette application contient des thread deamon et qu'un ou plusieurs de ces thread deamon tourne encore lorsque le dernier thread principale s'arrete et bien l'application s'arrete malgré tout .

    Ce que je te propose est simple , tu as le thread principale celui que tu lance quand tu execute ton main ce thread crée un thread deamon de traitement ainsi lorsque ton main se termine , le deamon s'arrete!
    De cette façon tu peux faire arreter le programme principale de la façon que tu veux , tu pourrais dans un premier temps lancer une JFrame en thread principale et demander a sortir de l'application lors du clique sur la fermeture de la fenetre !!

    Je suis pas sur d'etre tres clair !!
    UML avec VIOLET

Discussions similaires

  1. Script permettant de lancer une commande toutes les X secondes
    Par nekcorp dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/02/2014, 11h31
  2. Lancer une boucle toutes les secondes
    Par vaderetro33 dans le forum C
    Réponses: 28
    Dernier message: 07/10/2009, 10h35
  3. Mon ordinateur reboot toutes les 4 secondes
    Par zebra22 dans le forum Composants
    Réponses: 12
    Dernier message: 11/02/2008, 08h33
  4. Lancer un programme toutes les 5 minutes
    Par Empty_body dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 12/07/2006, 18h24
  5. changer la couleur de mon Form1 toutes les secondes
    Par stacker_junior dans le forum C++Builder
    Réponses: 9
    Dernier message: 10/05/2006, 19h36

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