客户端同时访问一个service,查询数据库状态,引发的不一致问题
我的项目有一个场景:
客户端同时访问一个url,controller调用了service类,service类是一个spring单例bean,service持有一个mybatis的repository对象,查询了记录数,例如:select count(1) from table_test where name=?
然后做类似以下的判断:
if (count == 0) {
insert1();
} else {
insert2();
}
问题在,每个线程访问到的count居然都是一样的,
这样的场景,假如不使用对service的方法使用synchronized限定,要如何控制好一致性啊?