次のコードがあります
private List<String[]> userList2 = new ArrayList<String[]>(10000);
ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 10, 10, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(5), new ThreadPoolExecutor.CallerRunsPolicy());
データベース クエリ
while (rs.next())
{
data = new String[2];
data[0] = rs.getString("userid");
data[1] = rs.getString("email");
userList2.add(data);
if(userList2.size()==10000) //Confusion in this part..
{
final List<String[]> elist = new ArrayList<String[]>(userList2);
executor.execute(new Runnable() {
public void run() {
doBilling(con,elist); //Parallel is not happening here...
}
});
方法があります
doBillng(Connection con,List<String[]> userList)
{
String list[]=null;
String userid=" ";
for(int i=0;i<userList.size();i++)
{
list=userList.get(i);
userid=props[0];
list = BillingDao.billById(uid, con);
}
}
userlist2 サイズが 10000 の場合、doBilling を 10 スレッドで並行して実行して、10000 レコードに高速で到達できるようにしたいと考えています。しかし、それは起こっていません!!! 私が間違っていることと、これをどのように解決する必要があるかを提案してください..
前もって感謝します