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();

}