
Java 并发
葫芦脸小眼睛
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 可重入锁实现原子性自增(ReentrantLock)
可重入锁:可以对一个ReentrantLock对象多次执行lock()枷锁和unlock()释放锁。 公平锁:线程在加锁之前会查看AQS队列中有没有排队,如果有排队那么它会排到队列后面。 非公平锁:线程会直接加锁,不会查看AQS队列。 底层实现AbstractQueuedSynchronizer ReentrantLock的两个构造方法(考虑公平策略和不考虑公平策略) // 不...原创 2019-07-05 17:57:53 · 1139 阅读 · 1 评论 -
Java 1亿次原子性自增悲观锁、乐观锁、可重入锁的性能比较分析
github 系统配置、使用类、JDK 系统:windows7 处理器:Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz 3.40GHz 内存(RAM):8.00G 系统类型:64位操作系统 悲观锁:synchronized 乐观锁:AtomicInteger、LongAdder JDK:1.7、1.8 结果分析 JDK1.8中乐观锁优化后的LongAdde...原创 2019-07-05 10:33:49 · 1107 阅读 · 0 评论 -
Java CAS算法优化实现乐观锁及原子性自增(LongAdder)
JDK1.8 对CAS机制进行了优化LongAdder。 使用分段CAS以及自动分段迁移的方式来大幅度提升多线程高并发执行CAS操作的性能。 首先有一个基值base,多线程累加数值都是对base进行累加的。 如果竞争激烈到一定程度无法对base进行累加操作时,会实施分段CAS机制,搞一个Cell数据,每个数组是一个数值分段,对cells数组中某个元素进行更新。 核心结构 // 单元格表。...原创 2019-07-05 08:53:04 · 1116 阅读 · 0 评论 -
Java CAS算法实现乐观锁及原子性自增(AtomicInteger)
乐观锁是一种思想,CAS是这种思想的一种实现方式。 CAS:Compare and Swap(比较并交换) CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 CAS缺点 ABA问题 线程1读取内存中的数据A 线程2将该数据修改为B 线程2将该数据修改...原创 2019-07-04 17:43:34 · 1333 阅读 · 2 评论