148 votes

Imprimez "hello world" toutes les X secondes

Dernièrement, j'ai utilisé des boucles avec de grands nombres pour imprimer Hello World :

int counter = 0;

while(true) {
    //loop for ~5 seconds
    for(int i = 0; i < 2147483647 ; i++) {
        //another loop because it's 2012 and PCs have gotten considerably faster :)
        for(int j = 0; j < 2147483647 ; j++){ ... }
    }
    System.out.println(counter + ". Hello World!");
    counter++;
}

Je comprends que c'est une façon très stupide de faire, mais je n'ai encore jamais utilisé de bibliothèque de minuterie en Java. Comment pourrait-on modifier ce qui précède pour imprimer toutes les 3 secondes ?

242voto

Tim Bender Points 11611

Si vous souhaitez effectuer une tâche périodique, utilisez un fichier de type ScheduledExecutorService . Plus précisément, ScheduledExecutorService.scheduleAtFixedRate (service d'exécution programmée)

Le code :

Runnable helloRunnable = new Runnable() {
    public void run() {
        System.out.println("Hello world");
    }
};

ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(helloRunnable, 0, 3, TimeUnit.SECONDS);

210voto

Rohit Jain Points 90368

Vous pouvez également jeter un coup d'œil à Timer y TimerTask que vous pouvez utiliser pour programmer l'exécution de votre tâche à chaque n secondes.

Vous avez besoin d'une classe qui étend TimerTask et remplacer le public void run() qui sera exécutée chaque fois que vous passerez une instance de cette classe à la méthode timer.schedule() la méthode..

Voici un exemple, qui imprime Hello World toutes les 5 secondes : -

class SayHello extends TimerTask {
    public void run() {
       System.out.println("Hello World!"); 
    }
}

// And From your main() method or any other method
Timer timer = new Timer();
timer.schedule(new SayHello(), 0, 5000);

46voto

Essayez de faire ça :

Timer t = new Timer();
t.schedule(new TimerTask() {
    @Override
    public void run() {
       System.out.println("Hello World");
    }
}, 0, 5000);

Ce code s'exécutera en imprimant la console Bonjour le monde cada 5000 millisecondes ( 5 secondes). Pour plus d'informations, lisez https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html

17voto

tmwanik Points 936

Je m'en sors avec un minuteur, j'espère que ça aidera. J'ai utilisé un minuteur de java.util.Timer y TimerTask du même paquet. Voir ci-dessous :

TimerTask task = new TimerTask() {

    @Override
    public void run() {
        System.out.println("Hello World");
    }
};

Timer timer = new Timer();
timer.schedule(task, new Date(), 3000);

9voto

saum22 Points 534

Vous pouvez utiliser Thread.sleep(3000) à l'intérieur d'une boucle for.

Note : Cela nécessitera un try/catch bloc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X