我有一个 ArrayList,其中有 1000 个插入 SQL 语句。但在执行时间上,此 ArrayList 的 Iterator 或(增强型 for 循环)的延迟需要 1 分钟。我的 JFrame 在此期间没有响应。我能做些什么?谢谢
Iterator itr = stms.iterator();
while (itr.hasNext()) {
DB_STM.executeUpdate((String) itr.next());
}
最佳答案
foreach
内部仅使用 iterator
,为了处理来自 JDBC 的批量更新和插入,您可以使用 addBatch()
进行批量更新和 PreparedStatement
的 executeBatch()
,如图 here
This issue just related to internal latency of loops. Are you agree with me ?
不,我不同意。基本上,您的代码几乎没有设计问题。
(1) 您应该在后台处理批量且成本高昂(就时间而言)的操作(例如按照其他人的建议使用 SwingWorker
)。
(2) 使用 JDBC addBatch()
和 executeBatch()
减少数据库命中并提高性能。
关于java - Iterator 或 foreach 的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40958128/