在Java的并发中,锁是一个非常重要的概念。 锁的种类可以分为8种,一共15个,分别是: 1.公平锁/非公平锁 2.可重入锁/不可重入锁 3.独享锁/共享锁 4.互斥锁/读写锁 5.乐观锁/悲观锁 6.分段锁 7.偏向锁/轻量级锁/重量级锁 8.自旋锁 ...
分类:
编程语言 时间:
2019-04-12 23:10:04
阅读次数:
198
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。 乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。 无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种 ...
分类:
其他好文 时间:
2019-04-12 19:26:24
阅读次数:
190
一般使用悲观锁(for update),都是防止并发情况下对某个业务表数据同时进行修改操作。 这个时候该如何去优化呢? 一般悲观锁,如果按照索引去查询,锁住的是行级锁。一般是单个账户一行记录。 这个时候可以考虑将要批量的更改业务数据,按照用户分组,然后开启多线程去处理。 这样能让多个用户之间同时处理 ...
分类:
其他好文 时间:
2019-04-05 09:32:51
阅读次数:
241
锁的种类 独享锁 VS 共享锁 独享锁:锁只能被一个线程持有(synchronized) 共享锁:锁可以被多个程序所持有(读写锁) 乐观锁 VS 悲观锁 乐观锁:每次去拿数据的时候都乐观地认为别人不会修改,所以不进行加锁操作。乐观锁适用于多读的应用类型。(CAS,Atomic) CAS(Compar ...
分类:
编程语言 时间:
2019-04-05 00:16:09
阅读次数:
183
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁
分类:
编程语言 时间:
2019-04-04 15:45:14
阅读次数:
213
乐观锁: 总认为不会产生并发问题,因此不会上锁,更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作来实现 version: 数据上有数据版本号version字段,每次更新version值加一 CAS操作方式:compare and set, 三个参数,数据所在的内存值 ...
分类:
其他好文 时间:
2019-03-27 19:40:00
阅读次数:
119
具体CAS操作 上一篇讲述了CAS机制,这篇讲解CAS具体操作. 什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清楚了,这些词也就唬不住人了。 synchronized是悲观锁,这种线程一旦得到锁, ...
分类:
编程语言 时间:
2019-03-27 12:35:09
阅读次数:
412
何谓悲观锁与乐观锁 何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。 悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁 ...
分类:
其他好文 时间:
2019-03-27 10:34:51
阅读次数:
87
一、概念: 乐观锁:适用于写少读多的情景,因为这种乐观锁相当于java的cas(比较并替换),所以多条数据同事过来的时候不用等待,可以立即进行返回 悲观锁:适用于写多读少的情景,这种情况也相当于java的synchronized,reentrantLock等,大量数据过来的时候,只有一条被写入,其他 ...
分类:
数据库 时间:
2019-03-26 13:17:54
阅读次数:
518
参考资料: "【学习总结】Git学习 GIT工作流 千峰教育(来自B站)" 1 Git工作流 GitFlow流五大分支: 主干分支 热修复分支 预发布分支 开发分支 功能分支 GitFlow工作流简化:feature分支可以省略,其他都不能 乐观锁,悲观锁 (实际上是数据库相关知识) END ...
分类:
其他好文 时间:
2019-03-24 17:39:43
阅读次数:
186