我用大量的行檢索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