我目前正在开发一款Java游戏,我有一个代表玩家健康状况的int,从100开始,每次与敌人交叉时生命值降低5,但是,它检查了60次一秒钟,因此,它迅速减少,因为那一秒,玩家正在与敌人接触,因此它每秒下降300,它正在接触它。我想知道是否有可能阻止int的值改变大约3-5秒?我不知道是否可能,我试过这个:
try {
Thread.sleep(4000);
} catch(InterruptedException ie) {
Thread.currentThread().interrupt();
}
然后可以在之后添加int,但这只会使整个程序停止4秒,并且当时还有其他事情发生。
答案 0 :(得分: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);
现在您可以决定何时运行线程以及运行多长时间。但是,我建议您在为时已晚之前重新考虑您的设计,并且您的代码会变得混乱。