不调用Future.get是否会引起任何问题



我正在执行某个流,其中我向Callable提交了一些任务,并将输出存储在Future<> future中。在某些情况下,我不会调用future.get()来检索值,也不会取消任务。这会引起什么问题吗?

在大多数情况下,当您不关心此任务的执行结果时,它不会引起任何问题。

但请注意future.get:的这个特殊功能

内存一致性影响:异步计算发生在相应的操作之后另一个线程中的Future.get((。

这里有一个例子:

int i = 0;

如果你让

i = 1;

在任务中,在future.get之后读取i,可以保证获得新的值1

如果不调用future.get,您可能会得到过时的值0

我正在执行某个流,其中我向Callable提交了一些任务,并将输出存储在Future<>中。在某些情况下,我不会调用future.get()来检索值,也不会取消任务。这会引起什么问题吗?

不,它不会引起任何问题。只要没有人持有对future的引用,就会对其进行垃圾收集

显然,如果你不需要call()方法的结果,你可以提交Runnable而不是Callable,但在我看来,你似乎想通过程序选择忘记Callable,这很好。

相关内容

  • 没有找到相关文章

最新更新