guava學習--SettableFuture


轉載:https://my.oschina.net/realfighter/blog/349931

翻開SettableFuture的源碼,我們看到SettableFuture繼承了AbstractFuture抽象 類,AbstractFuture抽象類實現了ListenableFuture接口,所以SettableFuture類也是 ListenableFuture接口的一種實現,源碼相當的簡單,其中只包含了三個方法,一個用於創建SettableFuture實例的靜態 create()方法;set方法用於設置Future的值,返回是否設置成功,如果Future的值已經被設置或任務被取消,會返回 false;setException與set方法類似,用於設置Future返回特定的異常信息,返回exception是否設置成功。

    SettableFuture類是ListenableFuture接口的一種實現,我們可以通過SettableFuture設置Future的返回 值,或者設置Future返回特定的異常信息,可以通過SettableFuture內部提供的靜態方法create()創建一個 SettableFuture實例,下面是一個簡單的例子:

 

SettableFuture sf = SettableFuture.create();
//設置成功后返回指定的信息
sf.set("SUCCESS");
//設置失敗后返回特定的異常信息
sf.setException(new RuntimeException("Fails"));

 

    通過上面的例子,我們看到,通過create()方法,我們可以創建一個默認的ettableFuture實例,當我們需要為Future實例設置一個返 回值時,我們可以通過set方法,設置的值就是Future實例在執行成功后將要返回的值;另外,當我們想要設置一個異常導致Future執行失敗,我們 可以通過調用setException方法,我們將給Future實例設置指定的異常返回。

    當我們有一個方法返回Future實例時,SettableFuture會顯得更有價值,但是已經有了Future的返回值,我們也不需要再去執行異步任 務獲取返回值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM