2016-07-18 30 views
3

Hier mein Code ausführen,In meiner Methode "scheduleAtFixedRate" gebe ich eine Verzögerungszeit ein, um die Methode zu starten. Aber diese Verzögerungszeit kann nicht funktionieren und sofort

static ScheduledExecutorService scheduler = null; 
scheduler.scheduleAtFixedRate(new Testing(),60, 24*60*60,TimeUnit.SECONDS); 


public static Runnable Testing() 
{ System.out.println("Testing..."); 
} 

Ich möchte Runnable() -Methode rufen nach 60 Sekunden später, aber es diese Methode aufrufen, sofort, wenn ich den Code ausführen. Gibt es ein Problem in meinem Code? Ich bin neu für die Methode scheduleAtFixedRate. Thanks :)

+0

Was ist ausführbar? statische Klasse oder Methode – Arjit

+0

Sry, habe ich noch einmal bearbeitet. – Alice

+0

Nicht zurückgegeben Runnable-Typ aus dem Test() – Arjit

Antwort

1

Bitte versuchen Sie diese

scheduler.scheduleAtFixedRate(new Runnable() { 
    @Override 
    public void run() { 
    System.out.println("Testing..."); 
    } 
}, 60, 24*60*60,TimeUnit.SECONDS); 
+0

Ok, lassen Sie mich zuerst versuchen, später werde ich antworten. Vielen Dank. – Alice

+0

https://www.codiva.io/p/d1bfeb1f-0895-4c72-b5fb-d99cfb05051b – JackDaniels

+0

es funktioniert. :) Aber was unterscheidet meine Methode? Eigentlich hat diese Methode nur eine Zeile, richtig? – Alice

0

Erstellen Sie eine Klasse, die Runnable erstreckt.

static class MyRunnable implements Runnable { 
    public void run() { 
     System.out.println(i + " : Testing ... Current timestamp: " + new Date()); 
     // Put any relevant code here. 
    } 
    } 

Dann funktioniert Ihr Code wie erwartet. Versuchen Sie, den vollständigen Arbeitscode hier unter codiva.io online compiler ide auszuführen.

Ein verwandter Vorschlag, in professionellen Code, Menschen im Allgemeinen vermeiden Thread-Scheduler verwenden, um eine Aufgabe auszuführen, die täglich ausgeführt wird. Die gebräuchlichste Option ist die Verwendung von Cron-Job und etwas mehr Setup. Aber das ist außerhalb des Rahmens dieser Frage.

+0

Danke für Ihre Antwort :). – Alice

+0

Hat dies Ihre Frage beantwortet? – JackDaniels

+0

ähnlich, Aber ich habe bereits meine Antwort mit der ersten Antwort, und auch über Ihre Antwort :) – Alice

0

Die Runnable ist eine Schnittstelle und Sie müssen die run() -Methode implementieren. Sie könnten versuchen, Ihren Code zu ändern

 


    scheduler.scheduleAtFixedRate(new Runnable() { 
     @Override 
     public void run() { 
      System.out.println("Testing..."); 
     } 
    },60, 24*60*60,TimeUnit.SECONDS);