2012-09-30 35 views
2

是否有辦法在Berkeley DB的java接口上執行非阻塞操作,並使用Future或類似的方法獲取操作的狀態和結果(如使用Future獲取Callable的結果)?Berkeley DB可以在java中異步使用嗎?

我不想調用DB的線程被阻塞,直到DB動作完成。

回答

1

從我在API文檔中看到的,Berkeley DB JE沒有異步API。對數據庫的每次調用都會阻止調用線程,直到動作完成。

0

是的,您可以像任何數據庫或資源一樣,通過簡單地創建一個線程並啓動它。

Runnable r = new Runnable() { 
    public void run() { 
     // call the DB 
     // call your callback to run other tasks after with the result 
    } 
}; 
new Thread(r).start(); 

這是在Java中執行異步操作的標準方法。 '負責線程,與您似乎參考的JavaScript相反。

+1

謝謝,但我想知道伯克利DB是否有非阻塞方法。我想提交數據到數據庫而不會阻塞我的線程,直到寫入結束並檢查動作是否完成以及使用Future是否成功。 –