如何在执行方法时暂停。在执行Java中的方法时暂停x秒
private void myMethod() {
// some lines of code
this.player.activateEffect(true);
// pause for 5 seconds
this.player.activateEffect(false);
}
我希望该方法将激活5秒的方法称为activeEfect。
如何在执行方法时暂停。在执行Java中的方法时暂停x秒
private void myMethod() {
// some lines of code
this.player.activateEffect(true);
// pause for 5 seconds
this.player.activateEffect(false);
}
我希望该方法将激活5秒的方法称为activeEfect。
最好的办法是进行在myMethod的你的行动()然后调用其他方法,大概一个Runnable 5秒后。
private void myMethod() {
// some lines of code
this.player.activateEffect(true);
// run afterDelay in 5 seconds
postDelayed(afterDelay, 5000);
}
private Runnable afterDelay = new Runnable() {
@Override
public void run() {
player.activateEffect(false);
}
};
此代码来自我自己的Android Java经验,但我认为这种技术是可移植的。
不,我认为这个例子仅适用于Android,因为它看起来是Android特定处理程序类的一部分。 –
在状态改变方法中等待的整个想法是有缺陷的。等待延迟整个线程,阻止任何工作完成。
如果碰巧是UI控制线程,应用程序会冻结。
你真正想要做的是给“效果”一个超时值,并且每个(游戏)“打勾”检查超时是否已经过期,并在过期时将其删除。
如果这是一个线性控制台程序或线程不是问题,'Thread.sleep' * *可以工作。但是,如果此代码是事件驱动GUI的一部分,如Swing或JavaFX程序,那么可以很容易地冻结整个程序,通过使用Thread.sleep来使其无响应,而不必关心其调用哪个线程。您可能想要提供有关程序结构的更多信息。 –
检查了这个http://stackoverflow.com/a/24104427/6689101 – zombie