Java并发问题,后台管理系统的并发?
后台管理系统,两个用户登录网站,点击查询页面,后端返回前台数据展示,一个用户点击审核校验是否已审核过,已审核则前端卡控,完成操作后,另一个用户进行审核,由于没有点击刷新,数据还是未审核,又进行了审核。结果是审核结果是后一个用户审核的结果,数据不一致。
回答:
这种问题其实就是代码逻辑写得不严谨导致的。
update set state = 1; //这种不管前因后果统一update的语句就经常出问题
//这种写法不管多少个人在操作都不会有问题。
update set state = 1 where state = 0;
//在且仅在未审核的情况下才会将数据改为审核通过,是为数据库乐观锁
回答:
第二个用户再审核的时候,后端需要判断审核状态,如果是未审核才可以进行审核
回答:
后端也需要判断审核状态,同时为了防止并发,如果是单系统,最好在controller上增加synchronized ,如果是多系统,最好在用一些分布式锁 例如redis分布式锁setnx等控制这条记录只会被一个人去审核
以上是 Java并发问题,后台管理系统的并发? 的全部内容, 来源链接: utcz.com/p/944687.html