java - 哪种设计比较好,或者有什么更好的设计
天蓬老师
天蓬老师 2017-04-18 10:23:18
[Java讨论组]

第一种:

@Transactional
public String submit(){
    1//检查参数合法性
    2//进入一个同步方法,修改库存modifyStock()
    3//插入两条记录信息数据
}
public String modifyStock(){
    lock.lock()
     try {
          修改库存   
     } catch (Exception e) {
                    
     }finally{
     lock().unlock();
     }
    
}

第二种:

@Transactional
public String submit(){
    1//检查参数合法性
    2//调用修改库存方法modifyStock()
    3//插入两条记录信息数据
}
@Transactional(isolation=Isolation.SERIALIZABLE)
public String modifyStock(){
    修改库存
}

我第二种对事务的配置感觉有点问题,希望大神修正一下。并给出哪个方案比较好,或者有什么更好的方案

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
PHP中文网

修改个库存数量就加Isolation.SERIALIZABLE,没必要吧。没见过哪个项目这样弄的。第二种方案不行。
第一个方案为什么要加内存锁?解决什么问题?分布式怎么办?
正常加事务扣减就行,怕并发也是加数据库的乐观/悲观锁。

黄舟

第一种是在运行时环境也就是内存级别加锁,第二种是在事务层面也就是数据库层面加锁。

我感觉第二种好一点,因为第一种如果用多机就不行了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号