我有一个方法execute()
,它运行一个在类级别声明的Runnable:
private Runnable r;
private Model m;
public Action(Model m) {
this.m = m;
r = () -> {
Operation op = new Operation(m);
op.executeAsync();
}
}
public void execute() {
//Do stuff here
r.run();
}
正在执行的是execute()
中执行的非异步任务,然后运行r
来处理需要几秒钟才能完成的异步工作。但是,只要Runnable运行,该方法就不会返回。相反,它仅在异步内容完成时返回。但是,如果我还在一个线程中运行op
内的异步任务,那么它会按预期工作,execute()
会在r
运行后立即返回,其余的方法结束后执行的异步工作。为什么我在这里展示的代码没有像我预期的那样工作,而没有将op
中的所有异步工作都包含在自己的线程中?