1、项目中,往往会遇到一些场景,会因为用户高并发造成数据的异常。本例场景:多个管理员可以编辑仓库数据,仓库数据每次新增时候,会自动生成物品编号,规则为在已有最大编号的基础上加1。由于多个管理员恰好同时新增数据,造成两个物品对应一个编号的情况。
本例为通过synchronized,设置方法同步,这样并发请求时,遇到需要同步的方法,第一个线程访问时方法上锁,其他线程等待第一个线程执行完成后解锁才可以访问。
出现问题的代码:
问题现象:
使用同步解决后的代码:
getInteger为同步方法
在通过多路并发验证,可以发现没有重复了
学海无涯苦作舟!!!