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 ?

7voto

Vicky Points 2492
public class HelloWorld extends TimerTask{

    public void run() {

        System.out.println("Hello World");
    }
}

public class PrintHelloWorld {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new HelloWorld(), 0, 5000);

        while (true) {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                System.out.println("InterruptedException Exception" + e.getMessage());
            }
        }
    }
}

une boucle infinie est créée ad scheduler task est configurée.

5voto

Luiggi Mendoza Points 46063

Le moyen le plus simple serait de configurer le thread principal pour qu'il dorme 3000 millisecondes (3 secondes) :

for(int i = 0; i< 10; i++) {
    try {
        //sending the actual Thread of execution to sleep X milliseconds
        Thread.sleep(3000);
    } catch(InterruptedException ie) {}
    System.out.println("Hello world!"):
}

Cela arrêtera le thread au moins X millisecondes. Le thread pourrait dormir plus longtemps, mais c'est la JVM qui décide. La seule chose garantie est que le thread dormira au moins ces millisecondes. Jetez un coup d'œil à la Thread#sleep doc :

Met le thread en cours d'exécution en sommeil (arrêt temporaire de l'exécution) pendant le nombre de millisecondes spécifié, sous réserve de la précision et de l'exactitude des minuteries et des programmateurs du système .

3voto

Subhrajyoti Majumder Points 20001

Utilisez java.util.Timer y Timer#schedule(TimerTask,delay,period) vous aidera.

public class RemindTask extends TimerTask {
    public void run() {
      System.out.println(" Hello World!");
    }
    public static void main(String[] args){
       Timer timer = new Timer();
       timer.schedule(new RemindTask(), 3000,3000);
    }
  }

2voto

user3928455 Points 11

C'est la manière simple d'utiliser les threads en Java :

for(int i = 0; i< 10; i++) {
    try {
        //sending the actual Thread of execution to sleep X milliseconds
        Thread.sleep(3000);
    } catch(Exception e) {
        System.out.println("Exception : "+e.getMessage());
    }
    System.out.println("Hello world!");
}

1voto

leigero Points 1446

Ce qu'il a dit. Vous pouvez gérer les exceptions comme vous le souhaitez, mais Thread.sleep(miliseconds) ; est le meilleur chemin à prendre.

public static void main(String[] args) throws InterruptedException {

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