1

我目前正在开发一个Java游戏,我有一个代表玩家生命值的int,从100开始,每次与敌人相交时生命值减少5,但是,它每秒检查60次,因此,它在玩家与敌人接触的那一秒迅速下降,因此每秒下降 300 秒。我想知道是否有可能阻止 int 的值改变大约 3-5 秒?我不知道这是否可能,我试过这个:

try {
   Thread.sleep(4000);
} catch(InterruptedException ie) {
   Thread.currentThread().interrupt();
}

然后 int 可以在那之后添加,但这只会让整个程序停止 4 秒,那时还有其他事情发生。

4

1 回答 1

1

Thread.sleep 导致当前线程暂停执行” - 如果您不想停止整个线程,请不要使用它。

您可以创建一个负责更改int值的线程,然后为了执行定期任务,您可以使用ScheduledExecutorService#scheduleAtFixedRate。例如:

Runnable myRunnable = new Runnable() {
    public void run() {
        //...
    }
};

ScheduledExecutorService ex = Executors.newScheduledThreadPool(1);
ex.scheduleAtFixedRate(myRunnable , INITIAL_DELAY, PERIOD, TIMEUNIT);

现在您可以决定线程何时运行以及运行多长时间。但是,我建议您在为时已晚并且代码变得混乱之前重新考虑您的设计。

于 2013-06-15T08:15:52.467 回答