
Java锁
看了个寂寞
一时刷题一时爽,一直刷题一直爽!
展开
-
自旋锁
原理 如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态,它们只需要等一等(自旋),等持有锁的线程释放锁后即可立即获取锁,这样就避免用户线程和内核的切换的消耗。 内核态 用户态 ...原创 2020-07-11 09:02:25 · 202 阅读 · 0 评论 -
乐观锁和悲观锁
乐观锁 乐观思想:认为读多写少,遇到并发写的可能性很低。取数据的时候总认为不会有其他线程对数据进行修改,所以不会上锁 但是在更新的时候会判断一下在此期间别人有没有去更新这个数据(一般会使用版本号机制或CAS操作实现。),采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。 java 中的乐观锁基本都是通过 CAS 操作实现的, CAS 是一种更新的原子操作, 比较当前值跟传入值是否一样,一样则更新,否则失败。 1、version方式原创 2020-07-09 18:02:05 · 156 阅读 · 0 评论