我有一个可设置的将来对象" temp",该对象具有上下文设置。此外,temp.addListener(new Runnable{...})
方法也被调用,基本上是为其注册听众。但是,最终如果出现任何例外,则调用temp.setException()
。如果setException
称为侦听器会被删除或清除上下文(基本上是设置例外后可设置的将来对象会损坏)?
代码流是这样的: -
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()}})
调用setException()
时,ListenableFuture
将运行其侦听器。如果要编写在这种情况下运行的代码,则可以使用Futures.addCallback
而不是addListener
。(addCallback
可让您指定仅在成功或仅在失败的情况下运行的代码。)
至于上下文中发生的情况:上下文不是ListenableFuture
API的一部分。我不知道它是由您还是另一个库添加的。您必须咨询该课程以了解其行为。