例如有段代码如下:private void save(){
String num='获取编号',String sql ="insert aa (lsh,name) values ('"+num+"','kk')";con.createStatement().execute(sql);log.info(sql);
}这个表aa中的lsh只能是唯一,我在日志里有发现,这块代码有同步问题,导致插入lsh的时候出错,
我现在能不能在该方法加个锁如下:
private synchronized void save()
这样会不会解决该同步问题?是否会影响效率?指教了。
String num='获取编号',String sql ="insert aa (lsh,name) values ('"+num+"','kk')";con.createStatement().execute(sql);log.info(sql);
}这个表aa中的lsh只能是唯一,我在日志里有发现,这块代码有同步问题,导致插入lsh的时候出错,
我现在能不能在该方法加个锁如下:
private synchronized void save()
这样会不会解决该同步问题?是否会影响效率?指教了。
即使同步,也不如做个static的变量num,这样至少省了“取”的数据库操作。
其实是如3楼说的,不用考虑同步,自增就好。
如果取编号也是来自数据库,那么把取编号和插入写到一个事务(存储过程)里,在事务开始时对目标表进行锁表