![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
concurrent
撇不完
今天不走,明天要跑
展开
-
DCL单例模式,如何解决DCL问题
何为DCL,DCL即Double Check Lock,双重检查锁定。下面从几个单例模式来讲解懒汉式public void Singleton{ private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(...原创 2019-02-27 19:14:41 · 4249 阅读 · 3 评论 -
synchronized原理分析及自旋锁、偏向锁、轻量级锁和重量级锁的概念和优化
诚然,我们一提到并发编程,首先想到的可能应该就是synchronized,无可厚非其作用。大多数人都会称呼其为重量级锁,但是随着JAVA1.6对synchronized的优化,其变得不再那么重了。1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。下面我们一起来探究synchronized的实现机制以及Java是如何对其进行优化的。从宏观上分析,锁...原创 2019-02-25 18:17:28 · 4920 阅读 · 0 评论 -
ReentrantReadWriteLock精华理解
ReentrantLock在并发情况下只允许单个线程执行受保护的代码,而在大部分应用中都是读多写少,所以,如果使用ReentrantLock实现这种对共享数据的并发访问控制,将严重影响整体的性能。ReentrantReadWriteLock中提供的读取锁(ReadLock)可以实现并发访问下的多读,写入锁(WriteLock)可以实现每次只允许一个写操作。ReentrantLock有两个锁:一...原创 2019-03-05 14:44:01 · 296 阅读 · 0 评论 -
ConcurrentHashMap精
本文着重讲解ConcurrentHashmap的源码实现和原理,JDK8中ConcurrentHashmap摒弃了分段锁技术的实现,直接采用CAS和Synchronized保证并发更新安全性,底层采用数组+链表+红黑树的存储结构。其数据结构如下:说明:数据结构采用数组 + 链表 + 红黑树的方式实现。当链表中的节点个数超过8个时,会转换成红黑树的数据结构存储,这样设计的目的是为了减少同一个...原创 2019-03-08 16:06:39 · 133 阅读 · 0 评论 -
ThreadPoolExecutor源码解析之机制原理篇
线程池可以解决两个不同问题:由于减少了每个任务的调用开销,在执行大量的异步任务时,它通常能够提供更好的性能,并且还可以提供绑定和管理资源(包括执行集合任务时使用的线程)的方法。每个 ThreadPoolExecutor还维护着一些基本的统计数据,如完成的任务数。这是ThreadPoolExecutor文档中的说明。线程池其实就是把你提交的任务(task)进行调度管理运行,但这个调度的过程以...原创 2019-03-10 17:26:33 · 293 阅读 · 0 评论