摘要: 1.一把锁保护多个资源 受保护资源和锁的关系是N:1 2.保护没有关联关系的多个资源 银行业务中针对账户余额的取款操作 银行业务中针对账户密码的更改操作 为账户余额和密码修改分配不同的锁来解决并发问题 代码,两把锁ballLock,pwLock分别保护不同的资源 class Account { // 阅读全文
posted @ 2021-06-25 16:15 SpecialSpeculator 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 1.原子性 一个或多个操作在cpu执行的过程中不被中断的特性,称为原子性 2.如何解决原子性问题 源头是执行一半线程切换,禁止线程切换是不是就可以了? 操作系统的线程切换,是操作系统自己控制cpu进行的,所以禁止操作系统的cpu发生中断就可以禁止线程切换 单核cpu场景,同一时刻只有一个线程执行,禁 阅读全文
posted @ 2021-06-25 15:23 SpecialSpeculator 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 1.前情提要 可见性,原子性,有序性,称为并发编程的bug之源 2.java的内存模型 导致可见性问题是cpu缓存引起 导致有序性问题是编译器优化 那么解决方案是什么? 禁用缓存和禁用编译优化,但是程序性能就下降了 那么如何能保证性能的同时,又解决了可见性及有序性问题? 该禁用缓存和编译优化的时候禁 阅读全文
posted @ 2021-06-25 14:02 SpecialSpeculator 阅读(92) 评论(0) 推荐(0) 编辑