我正在执行某个流,其中我向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
,这很好。