mysql多条线程操作更新数据库保证只有一条成功

情况如下,我有两个对象会同时读取到数据库的一行数据1,然后对象a把内行数据的元素改成2,那么这个时候对象B,他读到的也是1他也会去做这个更新操作,怎么样让对象B失败?按照逻辑来说,B是不能成功的。有好的建议提供一下嘛

加锁,悲观锁的同步或者lock
乐观锁的版本号。
如果并发量不是特别大,推荐乐观锁,表中增加版本号字段,更新时版本号+1,如果版本号不对则不更新。