摘要: 概述 本文系统的介绍下final的不可变性,我们从final修饰的属性、类和方法三个方面进行讲解,如下所示: 1.final修饰的属性是不能修改的(引用对象不能修改,但其属性是可以修改的) 2.final修饰的方法是不能被重载 3.final修饰的类是不能被继承的。 final修饰属性 详细介绍fi 阅读全文
posted @ 2020-04-23 17:03 cnxieyang 阅读(210) 评论(0) 推荐(0)
摘要: 本文介绍CAS、通过案例去演示CAS、CAS的应用场景、如何利用CAS进行原子操作、CAS的缺点。 概述 CAS是一种思想,使用并发场景,是一种原子性的操作,实现不能被其他线程打断的情况。 思路:我认为他应该是A,如果是我就修改,如果不是我就放弃他,可以避免多人修改引发的问题。 具体参数:内存值、预 阅读全文
posted @ 2020-04-23 16:30 cnxieyang 阅读(169) 评论(0) 推荐(0)
摘要: Adder累加器是在Jdk8引入的,AtomicLong的效率比较低,所以引入了LongAdder,为了提高并发情况下的效率。 当竞争比较激烈的时候,LongAdder可以把不同的线程对应到不同Cell上进行修改,降低了冲突的概率,采用的是多段锁的理念,提高了并发的性能。 下面我演示下LongAdd 阅读全文
posted @ 2020-04-23 15:35 cnxieyang 阅读(303) 评论(0) 推荐(0)
摘要: 本实例代码演示如何讲一个普通对象的Int 参数升级包装成原子性。 注意:该变量是可见的,不能被static修饰。 实例代码 package com.yang.atomic; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; / 阅读全文
posted @ 2020-04-23 15:04 cnxieyang 阅读(227) 评论(0) 推荐(0)
摘要: 本文演示原子数组的使用方法,我们使用100自增线程和100自减线程对AtomicIntegerArray进行自增和自减操作,核对最终的结果是否为零。 实例代码 实例代码如下,最终结果为零。 package com.yang.atomic; import java.util.concurrent.at 阅读全文
posted @ 2020-04-23 14:35 cnxieyang 阅读(214) 评论(0) 推荐(0)
摘要: 本文详细介绍AtomicInteger 常用方法介绍 1.public final int get() //获取当前的值 2.public final int getAndSet(int newValue)//获取当前的值并设置新的值 3.public final int getAndIncreme 阅读全文
posted @ 2020-04-23 14:13 cnxieyang 阅读(380) 评论(1) 推荐(0)
摘要: 本文详细介绍Java原子类的类型、使用场景和代码演示。 概述 原子类是在并发场景下线程安全的实现,接下来会对Jdk提供的原子类进行简要的分类,总共6类,见下图所示。 阅读全文
posted @ 2020-04-23 10:25 cnxieyang 阅读(424) 评论(0) 推荐(0)
摘要: 本文简单介绍下自旋锁的阻塞锁,主要详细介绍自旋锁的概念、使用场景和简易代码实现。 概述 我们都知道CPU唤醒或者阻塞线程时,是有上下文切换的开销,若临界区的范围不是很大,在多核处理器中使用自旋锁是ok的。 自旋锁:采用CAS的方法,不停的去尝试获取,直到获取成功 缺点 若临界区很耗时,使用自旋锁随着 阅读全文
posted @ 2020-04-23 09:54 cnxieyang 阅读(1322) 评论(0) 推荐(0)
摘要: 本文基于ReentrantReadWriteLock来说明它自己的锁升级的策略。 读写锁总结 这里我先说明下读写锁进行下总结: 要么多读,要么一写;读写锁适用去读多写锁的情况。 公平情况下,读写锁都不能插队;非公平情况下,写锁可以插队,读锁只有在头结点不是写等待的情况下插队。 读锁是否可以升级到写锁 阅读全文
posted @ 2020-04-23 09:26 cnxieyang 阅读(1255) 评论(0) 推荐(0)
联系邮箱:cnxieyang@163.com