制作在给定间隔内自动运行的代码

时间:2015-07-22 09:36:23

标签: java task schedule

我有一些关于让代码在给定时间间隔内自动运行的问题。我正在编程一种游戏模式,它会检查玩家是否杀死了地图中的所有怪物(我有这些方法)。我想知道对这个检查进行编程的最佳方法是什么?我已经查找了一个人在类构造函数中创建ScheduledExecutorService的方法....

private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

但我在网上看到了人们用过的地方

static void main(String[] args) {

还有一个运行方法来进行检查。哪个更好?我只是希望每隔几秒左右运行一次检查,看看玩家是否清除了地图,如果他或她有,那么就进入下一阶段。

2 个答案:

答案 0 :(得分:11)

我认为每次玩家杀死怪物时你都可以检查这个。也许你想听一个KillMonster事件。您可以创建接口并在其他类中实现它。

public interface KillMonsterEventListener {
    void onKillMonster ();
}

然后在播放器类中,您可以调用一个方法来调用所有事件侦听器的onKillMonster()。我想你知道怎么做。只需创建一个KillMonsterEventListener列表,并使用如下方法:

public void addKillMonsterEventListener (KillMonsterEventListener listener) {
    listeners.add (listener); //listeners is the list of KillMonsterEventListeners.
}

答案 1 :(得分:1)

总的来说,使用Executor只需花费一些代价,因为你可以很容易地拥有一个怪物数量的计数器,并在更新标记中杀死怪物时修改它。当它达到0时,玩家已经清除了等级。通常Executor适用于较大的操作,如自动保存到文件,还值得注意的是代码将在后台线程上执行。由于你只是要查询游戏中留下的怪物数量而不是改变用户界面,所以应该没问题。

问候static void main(String[] args) {我不明白这是怎么回事。