我正在處理Spring JDBC DAO中的大量數據。當檢索操作發生在一個單獨的線程中(使用ExecutorService)時,DAO直接返回一個迭代器覆蓋對象上的對象,該對象使用有界的使用take()進行操作。在Spring中同時訪問JDBC ResultSet
在此線程中,我看到以下行爲:檢索工作正常,但某些對ResultSet的調用正在導致調用掛起。這些調用
- isClosed()和
- isLast會()
但不
- isAfterLast()或
- isBeforeFirst( )或
- isFirst()
很顯然,我需要知道的最後一個元素是什麼(爲了插入一個特殊元素成產生的迭代器hasNext(假阻塞隊列)方法) 。在將對象放入BlockingQueue之前,我可以通過查找ResultSet中的行數來解決這個問題,但這有點笨拙。有沒有線程安全的方式來使用ResultSets?
切換到多線程數據源(我測試過C3POs ComboPooledDataSource)似乎沒有幫助。
注:第一次(錯誤地)確定了我這個問題here
嗯,晦澀..... – skaffman 2009-10-01 11:43:22