并发编程
高高石头小花菇
这个作者很懒,什么都没留下…
展开
-
Java并发之原子类提纲
无锁方案的实现原理Java是如何实现原子化操作的AtomicLong getAndIncrement()unsafe.getAndAddLong()该方法首先会在内存中读取共享变量的值,之后循环调用 compareAndSwapLong() 方法来尝试设置共享变量的值,直到成功为止。(经典do while实现)compareAndSwapLong() 是一个 native 方法,只有当内...原创 2019-07-10 17:14:36 · 77 阅读 · 0 评论 -
JUC常见的并发工具类
ConcurrentHashMapCopyOnWriteArrayListCopyOnWriteArrayList 读取是完全不用加锁的,并且更厉害的是:写入也不会阻塞读取操作。只有写入和写入之间需要进行同步等待。CopyOnWriteArrayList 类的所有可变操作(add,set等等)都是通过创建底层数组的新副本来实现的。当 List 需要被修改的时候,我并不修改原有内容,而是对原有...原创 2019-07-10 21:08:53 · 219 阅读 · 0 评论 -
JDK并发工具类以及AQS组件
AQS介绍AbstractQueuedSynchronizer,AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器。AQS 原理AQS维护一个共享资源state,通过内置的FIFO来完成获取资源线程的排队工作。(这个内置的同步队列称为"CLH"队列)。该队列由一个一个的Node结点组成,每个Node结点维护一个prev引用和next引用,分别指向自己的...原创 2019-07-10 21:20:11 · 259 阅读 · 0 评论 -
并发设计模式
Immutability模式:利用不变性解决并发问题我们可以通过不变性模式解决可见性问题,对象一旦被创建之后,状态就不再发生变化。将一个类所有的属性都设置成final的,并且只允许存在只读方法,那么这个类基本上就具备不可变性了。对于类修改的功能,就直接创建一个新的不可变对象。对于所有修改都创建一个新的不可变对象可能会比较浪费内存,这时就可以通过享元模式闭目安创建重复对象。Java语言中Lo...原创 2019-08-02 20:58:57 · 156 阅读 · 0 评论