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 无关(如果我是正确的)。当然,我正在从数据库中加载所有对象。

当我在第一种方法设置断点时,它工作正常。

如何在第一种方法执行之前停止第二种方法?

可能是什么原因?

4

1 回答 1

1

您可以在另一个线程中运行此方法并停止他使用wait()并稍后使用notify()方法运行他。

于 2013-05-08T14:17:14.070 回答