Java 如何让线程在特定阶段休眠? 正如你在代码中间看到的那样,我在“线程睡眠”(3000)中添加了“”,因为我希望进程停止3秒钟,然后继续,但是当我尝试运行它时,线程睡眠在它后面的任何其他代码之前执行,为什么我会怎样以及如何允许它按照我想要的顺序执行?
干杯 试试这个方法(您可能需要移动捕捉块):Java 如何让线程在特定阶段休眠? 正如你在代码中间看到的那样,我在“线程睡眠”(3000)中添加了“”,因为我希望进程停止3秒钟,然后继续,但是当我尝试运行它时,线程睡眠在它后面的任何其他代码之前执行,为什么我会怎样以及如何允许它按照我想要的顺序执行?,java,multithreading,Java,Multithreading,干杯 试试这个方法(您可能需要移动捕捉块): “它背后的任何其他代码”是您的睡眠呼叫下方的WorldTask,还是您的代码中的其他地方?不要紧,我找到了一个解决方案,感谢您尝试帮助tho:) @Override public void run(int interfaceId, int componentId) { if (interfaceId == 382 && componentId == 19) { player.stopAll();
“它背后的任何其他代码”是您的睡眠呼叫下方的
WorldTask
,还是您的代码中的其他地方?不要紧,我找到了一个解决方案,感谢您尝试帮助tho:)
@Override
public void run(int interfaceId, int componentId) {
if (interfaceId == 382 && componentId == 19) {
player.stopAll();
player.lock(4);
player.setNextAnimation(new Animation(6132));
final WorldTile toTile = new WorldTile(ditch.getRotation() == 3 || ditch.getRotation() == 1 ? ditch.getX() - 1 : player.getX(),
ditch.getRotation() == 0 || ditch.getRotation() == 2 ? ditch.getY() + 2 : player.getY(), ditch.getPlane());
player.setNextForceMovement(new ForceMovement(
new WorldTile(player), 1, toTile, 2, ditch.getRotation() == 0 || ditch.getRotation() == 2 ? ForceMovement.NORTH : ForceMovement.WEST));
try {
Thread.sleep(3000);
} catch(InterruptedException e){
e.printStackTrace();
}
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.setNextWorldTile(toTile);
player.faceObject(ditch);
player.getControlerManager().startControler("Wilderness");
player.resetReceivedDamage();
}
}, 2);
} else
player.closeInterfaces();
end();
}
@Override
public void run(int interfaceId, int componentId) {
if (interfaceId == 382 && componentId == 19) {
System.out.println("Am i printing?????");
try {
Thread.sleep(3000);
} catch(InterruptedException e){
e.printStackTrace();
}
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.setNextWorldTile(toTile);
player.faceObject(ditch);
player.getControlerManager().startControler("Wilderness");
player.resetReceivedDamage();
}
}, 2);
} else
player.closeInterfaces();
end();
}