如果你丢弃对 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 中的顶级对象。
在我的方法中,我必须调用 returns 未来的另一个方法 (AnotherMethod
)。
例如
private static void myMethod() {
Future<MyObj> mjObj = AnotherMethod();
return;
}
我实际上并不关心 AnotherMethod
返回的值(例如 myObj
的值),但我确实希望 AnotherMethod
到 运行 完全.
如果我放弃对未来的引用(如上例所示),AnotherMethod
是否仍会完成 运行ning?
我知道它不会在从 myMethod
返回之前完成,但是即使不再引用 myObj
,它还会在某个时候完成吗?
首先,AnotherMethod总是会从头执行到尾,因为你调用了它。至于并发,如果AnotherMethod启动一个Thread或者提交任务给一个executor那么这个并发执行不会被打断。垃圾收集器不会中断线程,因为它们是 GC 根 - JVM 中的顶级对象。