2016-12-08 7 views
-4

私はバックグラウンドで実行されるプログラムを作ろうとしていて、特定の時間にヒットすると、コンピュータ上にリマインダーがポップアップします。Java - 何かが本当であるのを待つ

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

usertime = timeまでプログラムを実行し続けるようにしようとしていますが、ユーザーが望むメッセージが表示され、プログラムが停止します。このコードはここで動作していません、誰でも私がこれを行う方法を知っています

+3

後ONCE何かをするために?彼らは弦ですか?より多くのコードを表示する – XtremeBaumer

答えて

0

このコードは、条件に達するまでCPUコアを100%で回転させます。

現在の時間と「ユーザー時間」(ミリ秒)の間の時間がわかる場合は、Thread.sleep(ms)を使用しないのはなぜですか。その後、

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

そして実行します:

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

も参照してください:https://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html

0

オブジェクトを定義することができます。与えられた場合、遅延の後にメソッドを呼び出します。

あなたは使用することができます:Timer.schedule usertimeと時間が何であるかを遅延

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

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

のJava utilのパッケージには、タイマーを持っている...そこにあなたはあなたが単にThread.sleep()を使用することができ

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

try { 
    Thread.sleep(sleepTime); 
} catch(InterruptedException ex) { 
    // Shouldn't happen 
} 
関連する問題