以下代码 conn.commit(); 后执行conn.close();抛出ConcurrentModificationException,为什么,
而且数据库用户老是被锁定,跟抛出这个Exception有关系吗
 
Connection conn = dbSys.getConnection(); //从poolman取得连接
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
String strSql="........................";
         PreparedStatement preStmt = conn.prepareStatement(strSql);
          ...............................
String strJobStatusSql = "......................";
stmt.addBatch(strJobStatusSql);
..............................................
stmt.executeBatch();
preStmt.executeBatch();
conn.commit();
if(!conn.isClosed()){
    conn.close();
conn = null;
}

解决方案 »

  1.   

    我敢肯定你们数据库连接 pool 的实现绝对有问题。
    业界上面那么多的开源datasource pool不用?自己实现一个,简直就是拿砖头砸自己。瞧瞧你们的代码,这些比如List,set Map 等一些线程不安全的东西,但是你们还拿它用在多线程方面。
    结果造成现在的下场了,呵呵!!
      

  2.   

    ConcurrentModificationException是线程并发造成的