2013-04-24 37 views
1

鑑於我有對象池,我怎麼能放心地返回一個池化對象返回到池中使用後,如果使用的是異步的? (在這種情況下使用FuturePromise如何在異步使用後安全地將對象返回到池中?

下面是一個例子:

 pool 
     .take 
     .flatMap { 
     connection => 
      connection 
      .sendQuery("SELECT 0") 
      .map { 
      query => 
       pool.giveBack(connection) 
       query.rows.get(0, 0) 
      } 
     } 

這裏的問題是,如果sendQuery調用失敗,對象將永遠不會被返回到池中。是否有某種未來的流水線序列,即使代碼本身不能這樣做,或者我應該忽略它,什麼可以讓我安全地將這個對象返回到池中?

池的實現是this one並且合併對象是this one

我的主要目的是使池的使用盡可能小錯誤,因爲它目前顯然不是這樣,因爲程序員可能忘記返回對象,池會很快耗盡自己。

回答

1

您正在尋找未來的「and Then」方法。

相關問題