2016-12-08 3 views
-4

Ich versuche ein Programm zu machen, das im Hintergrund läuft, und wenn es eine bestimmte Zeit erreicht, erscheint eine Erinnerung auf dem Computer.Java - Warte, dass etwas wahr ist

int looplol = 2; 
while(looplol != 1){ 
    if(usertime.equals(time)){ 
     JOptionPane.showMessageDialog(null, usertext); 
     looplol = 1; 
    } 

Ich versuche, es zu machen, damit es läuft das Programm hält bis Usertime = Zeit, dann wird es die Meldung der Benutzer wünscht, und das Programm beenden. Dieser Code hier funktioniert nicht, weiß jemand wie ich das kann

+3

tun, was Usertime und Zeit? Sind sie Saiten? Zeige uns mehr Code – XtremeBaumer

Antwort

0

Dieser Code wird einen CPU-Kern um 100% drehen, bis die Bedingung erreicht ist.

Wenn Sie herausfinden können, wie lange es zwischen der aktuellen Uhrzeit und der "Benutzerzeit" (in Millisekunden) ist, warum nicht einfach Thread.sleep(ms)?

long userTime = <some time in the future>; 
long sleepTime = System.currentTimeMillis() - userTime; 

try { 
    Thread.sleep(sleepTime); 
} catch(InterruptedException ex) { 
    // Shouldn't happen 
} 
0

Sie einfach Thread.sleep() verwenden:

private void waitUntilSystemTimeMillis(long stopTime) { 
    long sleepDuration = stopTime - System.currentTimeMillis(); 
    if (sleepDuration > 0) { 
     try { 
      Thread.sleep(sleepDuration); 
     } 
     catch(InterruptedException e) { 
      throw new RuntimException(e); 
     } 
    } 
} 

Und dann tun:

waitUntilSystemTimeMillis(time); 
JOptionPane.showMessageDialog(null, usertext); 

Siehe auch: https://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html

0

Java util-Paket hat einen Timer ... Sie dort kann ein Objekt definieren und bei gegebenem Aufruf eine Methode nach einer Verzögerung aufrufen ...

können Sie verwenden: Timer.schedule für etwas ONCE nach einer Verzögerung

Timer t = new Timer("--", true); 
t.schedule(new TimerTask() { 

    @Override 
    public void run() { 
     JOptionPane.showMessageDialog(null, "usertext"); 
    } 
}, 5000L); 
Verwandte Themen