您只有一个GUI线程。不要用它来打电话。如果您这样做,则必须先完成这些操作,然后GUI中才能进行其他任何操作。
至少您要启动一个新线程来执行您的任务
dmc.moveTo(destination)。更可能的是,这不是唯一的地方,你这样做,并且可能需要一个执行器设置为执行这些任务。
在不了解您的代码的情况下(尤其是因为您使用的是静态方法),我无法评论您如何设置,
Executor但是使用a的最简单示例
Thread是:
public static void moveTo(final Coordinate destination) { changeState(State.NAVIGATION); controlPnl.addRemote(Remote.createRemote(remoteType.NAVIGATION)); new Thread(new Runnable() { public void run() { dmc.moveTo(destination); changeState(State.IMMEDIATE); controlPnl.addRemote(Remote.createRemote(remoteType.IMMEDIATE)); } }).start();}这将创建一个新代码
Thread,该代码执行您的(匿名)代码
Runnable,该代码执行您的
moveTo()。请注意,这比
Executor准备好运行任务的效率低得多。它必须
Thread每次创建一个新的。但是,如果这不是您需要的性能问题,那么就很好。还要注意,由于我
destination直接在匿名内部类内部进行引用,因此必须在将其
final传递给您的方法时进行声明。



