小知识补充
首先,我们要知道在mysql中update操作都是线程安全的,mysql引擎会update的行加上***排他锁***,其他对该行的update操作需要等到第一个update操作提交成功或者回滚,才能获取这个***排他锁***,从而对该行进行操作。
例子表结构
小知识点:表必备三字段:id, create_time, update_time。
说明:其中id 必为主键,类型为bigint unsigned、单表时自增、步长为 1。create_time, update_time 的类型均为 datetime 类型。 (来自《阿里巴巴Java开发手册(华山版)》)
代码环境
- jdk1.8
- idea
- SpringBoot
- Mybatis Plus
场景演示
现在假设我们要写一个买书的代码(这里为了简单就一次卖一本啦),并使用线程池模拟并发开启30个线程去买20本书,那我们可以十分随意的写出这样的代码。