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

Langage Java Discussion :

exécuter un programme en Tâche de fond


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut exécuter un programme en Tâche de fond
    salut,
    j'ai une classe qui fait appelle à un script de backup, comment dois je faire pour que mon programme puisse s'exécuter, en tâche de fond, tout les jours à minuit.

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 589
    Points : 15 605
    Points
    15 605
    Par défaut
    Ce n'est pas un problème Java mais plutôt pour ton système d'exploitation. Tu doit le paramétrer pour qu'il démarre ton programme tout les soir a minuit. Quel est ton OS?

    Sinon tu peux toujours garder le programme java en résident pour qu'il déclenche une action a minuit. Mais ce n'est pas vraiment propre.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    j'ai un Windows XP, et je sais que je peux planifier une tâche, mais c'est pas l'objectif, je suis entraine d'étudier comment je peux faire un programme en java qui s'exécute systématiquement, et du fait que je viens de réaliser un script qui réalise une sauvegarde tout les jours, puis j'ai réussi à exécuter ce script à partir d'un programme java, je me suis dit que je peux faire de façon que se programme s'exécute systématiquement.
    je me suis documenté un peu et j'ai tombé sur les threads, puis sur le task timer mais c'est toujours ambigu pour moi, quelqu'un peut m'expliquer ce que je dois faire.

    merci
    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
    29
    30
    31
    32
    33
    public class ExecuteScript extends Thread {
        public void run() {
        String[] cmd = { "C:\\cygwin\\bin/sh.exe", "C:\\ConfAirSync/script1.sh" };
     
            try {
                Process p = Runtime.getRuntime().exec(cmd);
    //         p.waitFor();
                p.getOutputStream().close();
                p.getInputStream().close();
                BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
       String line = "";
     
                try {
        while((line = reader.readLine()) != null) {
         // Traitement du flux d'erreur de l'application si besoin est
                              System.out.println(line);
                              Thread.sleep(500);
        }
       } finally {
        reader.close();
       }
     
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    public static void main(String[] args) {
    ExecuteScript e =new ExecuteScript();
    e.run();
    }
     
     
    }

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 589
    Points : 15 605
    Points
    15 605
    Par défaut
    Si tu veux programmer une Tache a effectuer a intervalle régulier c'est les classes Timer et TimerTask qui t'intéressent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public static final int DAY_LENGTH = 1000 * 60 * 60 * 24;
    ...
            Date now = new GregorianCalendar(Locale.getDefault()).getTime();
            Date tomorrow = new Date((now.getTime()/DAY_LENGTH + 1) * DAY_LENGTH);
     
            new Timer("Planificateur", true).scheduleAtFixedRate(new TimerTask() {
     
                public void run() {
                    System.out.println("Lancement");
                }
            }, tomorrow, DAY_LENGTH);
    Je suis pas un expert des manipulation de Date, il doit y avoir un manière plus propre de calculer minuit le lendemain, mais ça devrait fonctionner.
    A noter le paramètre true dans le constructeur indique que si le programme arrive a son terme, le Timer ne prolongera pas sa durée de vie.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    merci ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme en tâche de fond
    Par Bloorp dans le forum C++
    Réponses: 15
    Dernier message: 08/04/2011, 15h34
  2. Lancer un programme en tâche de fond sous Windows
    Par FabaCoeur dans le forum Windows
    Réponses: 5
    Dernier message: 15/10/2009, 17h11
  3. Réponses: 5
    Dernier message: 05/02/2009, 13h01
  4. Réponses: 9
    Dernier message: 06/05/2008, 14h04
  5. Programme invisible en tâche de fond
    Par probo dans le forum Delphi
    Réponses: 3
    Dernier message: 08/02/2007, 11h23

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