如果您放弃对Future的引用,它将继续运行吗?

时间:2018-08-09 17:06:39

标签: java future

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

例如

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

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

如果我放弃对将来的引用(如上例所示),AnotherMethod仍将继续运行吗?

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

1 个答案:

答案 0 :(得分:2)

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