Java Runnable方法,但方法等待线程完成

时间:2017-08-02 19:20:45

标签: java multithreading asynchronous

我有一个方法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中的所有异步工作都包含在自己的线程中?

0 个答案:

没有答案