Java定时器每X秒执行一次

9

所以,我基本上需要一个每5秒运行一次的命令,但计时器不起作用... 我尝试了很多不同的方法, 唯一有效的是Thread.sleep(毫秒); 但这会导致我的整个游戏停止工作... 如果我尝试使用计时器,例如:

Timer timer = new Timer(1000, new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Hey");

            }
        });
        timer.setRepeats(true);
        timer.setCoalesce(true);
        timer.start();

如何使计时器正确触发?

你设置的是1000,这代表1秒而不是5秒。 - Al Lelopath
是的,我知道,但即使我将它设置为5000,它仍然会做同样的事情。 - Grim Reaper
将该程序相关内容翻译为中文:在新线程中放置代码并调用“sleep”方法,这样游戏就不会停止运行。如果您需要,我可以提供答案。 - rush2sk8
我会尝试一下,并在另一个评论中告诉您它是否有效。 - Grim Reaper
不起作用,但还是谢谢。 - Grim Reaper
1个回答

13
您应该将java.util.Timerjava.util.TimerTask配对使用。
Timer t = new Timer( );
t.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
      System.out.println("Hey");

    }
}, 1000,5000);

1000的意思是在执行前延迟1秒钟,而5000表示将会每5秒钟重复一次

要停止它,只需调用t.cancel()即可。


非常好用!非常感谢你! - Grim Reaper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接