gpt4 book ai didi

java - 如何让 Java 在继续之前等待方法完成?

转载 作者:行者123 更新时间:2023-12-04 20:47:33 24 4
gpt4 key购买 nike

所以我的问题是我需要这些方法一个接一个地运行,但我无法弄清楚如何让这些方法在运行之前等待。
任何帮助表示赞赏。谢谢你。
这是我的代码:

public void startMoving() throws InterruptedException
{
moveEnemy("right",3);
wait();
moveEnemy("down",3);
wait();
moveEnemy("right",2);
wait();
moveEnemy("up",1);
wait();
moveEnemy("right",2);
wait();
moveEnemy("up",2);
wait();
moveEnemy("right",2);
wait();
moveEnemy("down",4);
wait();
moveEnemy("left",1);
wait();
moveEnemy("down",2);
wait();
moveEnemy("right",3);
wait();
moveEnemy("up",2);
wait();
moveEnemy("right",1);
wait();
moveEnemy("up",1);
wait();
moveEnemy("right",3);
}
public void moveEnemy(final String direction, final int numMoves)
{
Thread moveThread = new Thread(new Runnable()
{
public void run()
{
isMoving = true;
int originalX = getX();
int originalY = getY();
for(int loop = 0; loop <= 98*numMoves; loop++)
{
try
{
Thread.sleep(5);
}
catch (InterruptedException e){}
if(direction.equals("up"))
{
setLocation(originalX,originalY+loop);
}
if(direction.equals("down"))
{
setLocation(originalX,originalY-loop);
}
if(direction.equals("left"))
{
setLocation(originalX-loop,originalY);
}
if(direction.equals("right"))
{
setLocation(originalX+loop,originalY);
}
}
try
{
Thread.sleep(50);
}
catch (InterruptedException e){}
notify();
}
});
moveThread.start();

最佳答案

最简单的解决方案可能是不使用线程,但我怀疑那是您想要的。

您可能正在寻找的是锁的概念:

方法可以通过调用获取与对象关联的锁:

synchronized(nameOfTheLockObject) {
//do some code here
}

这获取给定对象的锁,执行代码并随后释放锁。如果锁已经被另一个方法/线程获取,代码会暂停,直到锁被另一个方法/线程释放。

您还可以在类的方法中添加synchronized 语句,使其获取父对象的锁。

有关这方面的更多信息,请访问:
http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html

关于java - 如何让 Java 在继续之前等待方法完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21124879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com