我正在为我的 Java 类开发一个文本冒险游戏,并且在尝试对打印语句显示在控制台中进行计时时遇到了问题。
基本上在 45 秒后,我希望显示一个打印语句,在这种情况下,打印语句会提醒用户他们需要让他们的虚拟狗出去......
在用户给出正确的命令后,我还需要重置计时器。
import java.util.Timer;
import java.util.TimerTask;
...
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("delayed hello world");
}
}, 45000);
要取消计时器,可以使用 TimerTask 变量来记住任务,然后调用它的 cancel() 方法,或者使用timer.purge()
; 后者取消计时器上的所有任务。要再次安排任务,只需重复。
将来您可能希望进行更高级的操作,因此阅读 Timer API 文档是个好主意。
Timer timer = new Timer();
timer.schedule(new TimerTask(){
public void run() {
System.out.println(" let the virtual dog out ");
}
}, 45000);
尝试在新线程中运行。
new Thread(new Runnable()
{
public void run()
{
Thread.sleep(45000);
System.out.println("My message");
}
})
.run();
这应该有效。
只需告诉线程休眠 45 秒,这里有一个教程:
http://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html
告诉主线程休眠可能并不理想,因为它会导致您的程序基本上停止。使用另一个线程(需要做一点多线程)来定时输出,并检查是否应该在 45 秒后打印消息。