我正在尝试制作一个在后台运行的程序,当它遇到一定时间时,会在计算机上弹出一个提醒。
int looplol = 2;
while(looplol != 1){
if(usertime.equals(time)){
JOptionPane.showMessageDialog(null, usertext);
looplol = 1;
}
我试图让它继续运行程序直到usertime = time,然后它将显示用户想要的消息并停止程序。这里的代码不起作用,有没有人知道我该怎么做
答案 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);