同时修改的话怎么可以避免数据丢失问题,同时修改一条数据,第一个事务查到50第二个事务先
查到数据为50,第一个事务添加10后事务提交,第二个事务添加20提交后数据会不会发生覆盖。
简单一点的实现 乐观锁就行了,加个版本号
即使是同时修改,先提交的数据会加锁,此时先修改完你的业务数据和版本号(修改是根据id和版本号去做条件过滤)
第二个提交时,根据他查到的id和版本号去提交修改,发现数据找不到了,此时就不能改了,需要重新查询版本号再去修改
最后的数据,会被后面操作的线程所修改。
这也就造成了数据的不一致性,脏数据等问题。
涉及到数据库的话,需要控制数据库事务级别来避免这类问题发生。
只是java中的资源共享问题的话,可以通过同步锁来控制。