Java - 等待某些事情成真

时间:2016-12-08 11:52:36

标签: java

我正在尝试制作一个在后台运行的程序,当它遇到一定时间时,会在计算机上弹出一个提醒。

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

我试图让它继续运行程序直到usertime = time,然后它将显示用户想要的消息并停止程序。这里的代码不起作用,有没有人知道我该怎么做

3 个答案:

答案 0 :(得分:0)

此代码将使CPU核心旋转100%,直到达到条件。

如果你可以算出当前时间和“用户时间”(以毫秒为单位)之间的长度,为什么不只使用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
}

答案 1 :(得分:0)

您可以简单地使用Thread.sleep()

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

答案 2 :(得分:0)

Java util包有一个Timer ...在那里你可以定义一个对象,当给定时,在延迟后调用一个方法......

您可以使用:Timer.schedule在延迟后执行某项操作

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

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