线程同步问题,急,在线等。。。。
public class ExaThread extends GeneralLogic{
public synchronized String test(){
Connection conn = null;
try {
conn = this.getConnection();
Statement stmt = conn.createStatement();
String today = CommonTools.getNumToday();
int maxID = 0;
String sql = "select max(barcode) as bar from qqq where barcode like '" + today + "%'";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String tmp = rs.getString("bar");
maxID = Integer.parseInt(tmp == null ? "00000" : tmp.substring(8));
}
rs.close();
String temp = today + CommonTools.leftFillChar(Integer.toString(maxID + 1), "0", 5);
String insql = "insert into qqq values("+temp+")";
stmt.execute(insql);
stmt.close();
return temp;
}
catch (Exception ex) {
}
finally {
this.freeConnection(conn);
}
return null;
}
}
public class Test implements Runnable{
ExaThread et = new ExaThread();
public void run() {
for(int i=0;i<50;i++){
try {
//Thread.sleep(1000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" "+et.test());
}
}
public static void main(String[] args){
Thread t1 = new Thread(new Test());
Thread t2 = new Thread(new Test());
Thread t3 = new Thread(new Test());
Thread t4 = new Thread(new Test());
Thread t5 = new Thread(new Test());
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
加了锁,还是出现重号问题。。大家帮看看那里错了。。