我用大量的行检索ResultSet。每一行都必须进行分析,所以我想分析一个新线程中的每一行(不要担心:我不会同时启动所有线程,例如连续说10)。整个ResultSet将专门用于从中读取数据(所以它是一种静态只读表)。如何从Java的ResultSet中复制/克隆单个行?多线程实现
所以我想要做的是什么:
ResultSet rs;
public void loadResultSet(){
...
rs = _preparedStatement.executeQuery();
int rowSize = 0;
while (rs.next()) {
rowSize++;
}
//this method starts 10 threads simultaneously
runThreads(rowSize);
...
}
而且......
@Override
public void run() {
//Unknown object that allows me to store a copy of a single row from ResultSet
Foo foo = rs.absolute(index);
//Then i can retrieve data just like a normal ResultSet
String s = foo.getString(1);
....
....
}
什么建议吗?
样品非常感谢!谢谢!
您正在每行运行一个线程,所以为什么要在resultSet上运行只是为了得到一个计数?只需为每一行启动一个线程...如果您想限制线程,使用Executors服务并使用最大N的线程池(例如10个线程),然后向每个行的任务提供线程。 – 2013-04-05 00:47:05
这不是重点。无论如何,我无法从多个线程读取到不同位置的相同ResultSet,问题将是相同的 – Immortal 2013-04-05 13:19:46
我会使用线程的唯一原因是每行处理花费大量时间,例如,你可以得到下一行,但是你在处理之前阻塞,没有其他真正的好处,使这个多线程。你能解释我错过了什么吗? – 2013-04-05 14:04:39