gpt4 book ai didi

java - 加快计时器的速度?

转载 作者:行者123 更新时间:2023-11-30 03:00:55 24 4
gpt4 key购买 nike

当整数变小时,我试图使当前的计数器/计时器加速。例如它会像10.......... 9.........、8.........、7........ 6....... 5.... . 4.... 3... 2.. 1.

当前代码:

    private int interval;
private Timer timer;

public void startTimer(final Player p, String seconds) {
String secs = seconds;
int delay = 1000;
int period = 1000;
timer = new Timer();
interval = Integer.parseInt(secs);
timer.scheduleAtFixedRate(new TimerTask() {

@Override
public void run() {
p.sendMessage("" + setInterval(p));
}

}, delay, period);
}

private final int setInterval(Player p) {
if (interval == 1){
timer.cancel();
p.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Countdown Finished!");
}
return --interval;
}

最佳答案

From the Java docs:

public void scheduleAtFixedRate(TimerTask task,
Date firstTime,
long period)

Schedules the specified task for repeated fixed-rate execution, beginning at the specified time. Subsequent executions take place at approximately regular intervals, separated by the specified period.

使用此方法,您无法更改周期,因为此方法不是为此设计的。如果您尝试访问任务内的句点,编译器将会失败,因为句点在任务中不可见。

如果您不想将注意力集中在线程、可运行对象和 wait() 方法上,并且希望坚持使用 Timer 类中的方法(我假设您使用过该方法 - 但郑重声明,如果您使用可能包含文档的另一个包中的方法,请在您发布的源代码中添加导入!),请考虑使用 public void Schedule(TimerTask task, long delay) 代替,包装在while 循环。然后您可以更改循环内的延迟参数,并安排在不同的时间跨度内执行任务。

当然,您必须弄清楚如何在倒计时完成时退出 while 循环(一种“快速而肮脏”的方法是使用 boolean 值)。但是因为您基本上在 while 循环的每次迭代中“重置”计时器,所以 timer.cancel() 不会为您做任何事情。它会取消一次,但下一次迭代计时器将简单地重新启动任务。

关于java - 加快计时器的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35999507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com