我希望有一个方法startTimer(30)
,其中的参数是倒计时的秒数。如何在Java中实现?
java.util.Timer
并不是一个坏选择,但是javax.swing.Timer
可能更加方便,可以参考这个示例。
Java 5的做法可能是这样的:
void startTimer(int delaySeconds) {
Executors.newSingleThreadScheduledExecutor().schedule(
runnable,
delaySeconds,
TimeUnit.SECONDS);
}
runnable
描述了你想要做的事情。例如:
Runnable runnable = new Runnable() {
@Override public void run() {
System.out.println("Hello, world!");
}
}
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
public class TimerDemo {
Toolkit toolkit;
Timer timer;
public TimerDemo(int seconds) {
toolkit = Toolkit.getDefaultToolkit();
timer = new Timer();
timer.schedule(new RemindTask(), seconds * 1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time's up!");
toolkit.beep();
System.exit(0);
}
}
public static void main(String args[]) {
System.out.println("About to schedule task.");
new TimerDemo(30);
System.out.println("Task scheduled.");
}
}
有很多有用的链接。
在“Javascript是上帝”的帮助下,我做到了,在特定时间玩游戏的解决方案。
public static void main(String args[]) {
boolean flag = true;
while (flag) {
new TimerDemo(30);
game();
}
}
game()
函数中,标志变量会发生改变。