java web多线程修改数据库数据和查询数据库数据的同步问题
publicvoidupdate(){Stringsql="updategoodssetquantity=quantity+1wheregoods_id=1";try{s...
public void update(){
String sql = "update goods set quantity=quantity+1 where goods_id=1 ";
try {
st = conn.createStatement();
st.executeUpdate(sql);
sql = "select quantity from goods where goods_id=1";
rs = st.executeQuery(sql);
if(rs.next()){
System.out.println(rs.getInt(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void run(){
for(int i=0;i<5;i++){
update();
}
}
public static void main(String[] args){
for(int i = 0; i<5; i++){
new MyThread().start();
}
}
结果:
126
127
128
129
131
131
132
133
134
135
137
138
139
141
141
143
144
144
145
147
148
148
149
149
150
出现相同的结果了,怎么办 展开
String sql = "update goods set quantity=quantity+1 where goods_id=1 ";
try {
st = conn.createStatement();
st.executeUpdate(sql);
sql = "select quantity from goods where goods_id=1";
rs = st.executeQuery(sql);
if(rs.next()){
System.out.println(rs.getInt(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void run(){
for(int i=0;i<5;i++){
update();
}
}
public static void main(String[] args){
for(int i = 0; i<5; i++){
new MyThread().start();
}
}
结果:
126
127
128
129
131
131
132
133
134
135
137
138
139
141
141
143
144
144
145
147
148
148
149
149
150
出现相同的结果了,怎么办 展开
3个回答
展开全部
加上synchronized锁
追问
怎么加
追答
synchronized(this)
{
for(int i=0;i<5;i++){
update();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加同步锁public synchronized void update()
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
他们的回答赞一个,还可以用乐观锁
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询