如果你丢弃对 Future 的引用,它还会 运行 吗?

If you discard a reference to a Future, will it still run?

在我的方法中,我必须调用 returns 未来的另一个方法 (AnotherMethod)。

例如

private static void myMethod() {
    Future<MyObj> mjObj = AnotherMethod();
    return;
}

我实际上并不关心 AnotherMethod 返回的值(例如 myObj 的值),但我确实希望 AnotherMethod 到 运行 完全.

如果我放弃对未来的引用(如上例所示),AnotherMethod 是否仍会完成 运行ning?

我知道它不会在从 myMethod 返回之前完成,但是即使不再引用 myObj,它还会在某个时候完成吗?

首先,AnotherMethod总是会从头执行到尾,因为你调用了它。至于并发,如果AnotherMethod启动一个Thread或者提交任务给一个executor那么这个并发执行不会被打断。垃圾收集器不会中断线程,因为它们是 GC 根 - JVM 中的顶级对象。