[英]is there a way to add a delay to a java program without using sleep?
在我的游戏中,我有一些统计数据希望在一段时间后下降,但我无法使用睡眠功能。 有人可以给我一个更好的方法示例吗? 我看过有关“摇摆计时器”的视频,但是这些视频都帮不了我什么。 我也听说过计时器实用程序,但是似乎几乎没有视频。
这是我尝试做的事情:
int hunger = 10;
public void hungerDown(){
try{
Thread.sleep(5000);
hunger--;
}
catch(Exception e){
}
}
您正在尝试制作游戏吗? 如果是这样,您应该有一个游戏循环。 这将跟踪时间,更新和渲染。 这是一个很好的网站,可以帮助您入门。
ScheduledExecutorService execService = Executors.newSingleThreadScheduledExecutor();
public void hungerDown() {
scheduledThreadPool.schedule(new Runnable() {
hunger --;
}, 5, TimeUnit.SECONDS);
}
Java为此提供了一种TimerTask
机制。 例如,
long delayMs = 1000;
new Timer().schedule(
new TimerTask() {
@Override
public void run() {
/* your delayed logic */
}
},
delayMs
);
另一个选择是使用ScheduledExecutorService
并调用ScheduledExecutorService.schedule(Callable<V> callable, long delay, TimeUnit unit)
。 您可以使用java.util.concurrent.Executors
的工厂方法之一来获取实例。
目前无法提供代码示例,但您可能会发现DelayQueue有用。
本质上,您可以创建一个DelayQueue
并将延迟的项目发布到其中。 然后启动一个Thread
,该Thread
只等待队列中的内容出来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.