0
我有一個for循環,它向ArrayList中添加了50,000個對象,如下所示,所以執行時間更長。停止方法直到另一個執行完成?
public List<GoogleFeedEntry> getEntries(Iterator it) {
GoogleFeedUtil gfu = new GoogleFeedUtil(host, prefix, domain, serverName);
List<GoogleFeedEntry> entry = new ArrayList<GoogleFeedEntry>();
GoogleFeedEntry gfe;
GoogleFeedEntryShipping shipping;
while (it.hasNext()) {
gfe = new GoogleFeedEntry();
shipping = new GoogleFeedEntryShipping();
ProductBO product = (ProductBO) it.next();
entry.add(gfe);
}
return entry;
}
此方法後,我呼籲另一種方法類似
public void doSomething(){
//some code here
}
我打電話裏面的另一種方法這兩種方法。如果我把有限數量的對象列出來,那麼它正在解決任何問題。在50,000個對象的情況下它拋出以下異常
java.sql.SQLException: Maximum open cursors exceeded ORA-01000
我覺得這與oracle無關(如果我是正確的)。我正在加載數據庫中的所有對象。
當我在第一個方法設置斷點,然後它工作正常。
如何停止第二種方法,直到第一種方法執行?
可能是什麼原因?
你的錯誤看起來很直截了當:你不關閉oracle數據庫中的遊標。此外:爲什麼每次迭代都會創建一個新的發貨?你有什麼產品?它沒有用。 – Dariusz 2013-05-08 14:12:39
@Dariusz我爲每個迭代創建運輸,因爲每個對象都有自己的送貨細節。我正在使用它所有的代碼不會發布 – user964147 2013-05-08 14:15:03
,除非你正在做一些特殊的事情,第二種方法沒有運行,直到第一種方法返回 – dstarh 2013-05-08 14:15:22