我有一个Settable Future对象“temp”,它有一个上下文设置。同样调用temp.addListener(new Runnable{...})
方法,基本上是为它注册一个监听器。但是最终如果出现任何异常,则调用temp.setException()
。如果调用setException
将取消注册侦听器或清除上下文(在设置异常后,Settable Future对象基本上会被损坏)吗?
代码流如下: -
temp.setContext({temp.set(//some value is set if everything goes right) || temp.setException(//set exception if something comes up)});
temp.addListener(new Runnable{ run(){temp.get()}})
答案 0 :(得分:4)
当您致电setException()
时,ListenableFuture
will run its listener。如果您想编写在这种情况下不运行的代码,您可以使用Futures.addCallback
代替addListener
。 (addCallback
允许您指定仅在成功或仅在失败的情况下运行的代码。)
关于上下文发生的情况:上下文不是ListenableFuture
API的一部分。我不知道它是否是您或其他图书馆添加的。您必须咨询该课程以了解其行为。