一旦调用了setException方法,Settable Future对象会发生什么?

时间:2016-12-18 16:11:37

标签: java guava future

我有一个Settable Future对象“temp”,它有一个上下文设置。同样调用temp.addListener(new Runnable{...})方法,基本上是为它注册一个监听器。但是最终如果出现任何异常,则调用temp.setException()。如果调用setException将取消注册侦听器或清除上下文(在设置异常后,Settable Future对象基本上会被损坏)吗?

代码流如下: -

  1. temp.setContext({temp.set(//some value is set if everything goes right) || temp.setException(//set exception if something comes up)});

  2. temp.addListener(new Runnable{ run(){temp.get()}})

1 个答案:

答案 0 :(得分:4)

当您致电setException()时,ListenableFuture will run its listener。如果您想编写在这种情况下运行的代码,您可以使用Futures.addCallback代替addListener。 (addCallback允许您指定仅在成功或仅在失败的情况下运行的代码。)

关于上下文发生的情况:上下文不是ListenableFuture API的一部分。我不知道它是否是您或其他图书馆添加的。您必须咨询该课程以了解其行为。