2016-12-18 2 views
2

J'ai un objet Settable Future "temp" qui a un contexte défini. Aussi temp.addListener(new Runnable{...}) méthode est appelée, fondamentalement en enregistrant un auditeur à elle. Toutefois, si une exception survient, temp.setException() est appelée. Si le setException est appelé, l'auditeur sera-t-il désenregistré ou le contexte sera-t-il effacé (l'objet Settable Future sera-t-il endommagé en principe une fois que l'exception aura été réglée)?Qu'advient-il d'un objet Settable Future une fois que la méthode setException est appelée?

Le flux de code est quelque chose comme ceci: -

  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()}})

Répondre

4

Lorsque vous appelez setException(), le ListenableFuturewill run its listener. Si vous voulez écrire du code qui sera pas être exécuté dans ce cas, vous pouvez utiliser Futures.addCallback au lieu de addListener. En ce qui concerne le contexte, le contexte ne fait pas partie de l'API ListenableFuture.

Je ne sais pas si cela a été ajouté par vous ou une autre bibliothèque. Vous devriez consulter cette classe pour savoir comment elle se comporte.