在多线程环境中,每个线程都在执行此调用()>>
PreparedStatement st1 = null
PreparedStatement st2 = null;
.....
.....
st1.executeBatch();
st2.executeBatch();
connection.commit();
是否保证对于每个线程,st1中的sql批处理将在st2中的sql批处理之前执行?换句话说,在这种情况下保证同步行为吗?
由于
答案 0 :(得分:0)
根据documentation,连接对象可以启用(默认模式)或禁用自动提交模式。当自动提交为假时:
如果连接处于自动提交模式,则其所有SQL语句将作为单个事务执行并提交。否则,其SQL语句将分组为通过调用方法提交或方法回滚来终止的事务。默认情况下,新连接处于自动提交模式。
因此,如果自动提交为false,则第一批将在第二批之前提交。如果auto-commit为true,则第一批和第二批将作为一个事务提交。请注意,outputs = []
for s in inputs:
x,y,z = s.split(",")
outputs.append([int(x), y.strip(), z.strip()])
仅应在自动提交为假时使用。
在这两种情况下,执行顺序(无论提交模式如何)都遵循代码中的顺序。