
【并发专题】
文章平均质量分 92
依本多情
欲戴王冠必承其重
展开
-
(二)synchronized的实现原理(从JVM中C++源码层面研究)
浅谈synchronized的底层实现原理首先synchronized是一种重量级的锁,跟volatile相比而言。但是两者又有各自的优缺点和不足之处,比如volatile锁的是关键的变量,而synchronized锁的主要是对象,通过monitor机制来实现如何能锁住对象的下面可以锁住的对象和方法 对象锁(monitor)机制一个简单的demopublic class S...原创 2018-07-23 23:04:18 · 1408 阅读 · 0 评论 -
(九)聊一下并发中的自增原子操作的AtomicLong在JDK1.8之后是如何优化成LongAdder的,为什么要优化自增原子类?
(一)先聊聊AtomicLong的基本概念,然后聊一下他的缺陷问题,然后引出LongAdder的优点(1)大家都使用过AtomicInteger、AtomicLong等这几类原子性的工具类,具体怎么用我就不说了,就说一下他们的大概的基本实现原理其实这些基本的原子操作的思想大体都是, expect 表示当前内存中你所预期望的值,update 是你想要更新的值 public fin...原创 2019-08-18 14:40:10 · 2523 阅读 · 1 评论 -
(七)如何理解线程安全的ConcurrentLinkedQueue队列的底层源码实现?
(一)先了解一下ConcurrentLinkedQueue是怎么来实现的线程安全的队列原创 2018-10-24 23:14:53 · 5470 阅读 · 0 评论 -
(八)如何理解Executors框架下的四大线程池运行原理和适用场景
(一)由标准线程池ThreadPoolExecutor演变而来的三大线程池(1)FixedThreadPool是一种可重用固定线程数的线程池,阻塞队列适用的是LinkedBlockingQueue的无界阻塞队列,适用于需要保证所有提交的任务都要被执行的情况(2)SingleThreadExecutor是使用单个worker线程的Executor,也就是他的corePoolSize和maximu...原创 2018-10-29 22:21:48 · 1223 阅读 · 2 评论 -
(六)深入理解FutureTask、Callable、RunnableFuture的底层源码和关系?
(1)先整体看一下他们之间的血缘关系和层次关系 FutureTask实现了RunnableFuture接口 RunnableFuture接口多继承了Runnable和Future的接口类 Runnable接口中只有一个方法: @FunctionalInterfacepublic interface Runnable { //执行 public abstr...原创 2018-09-11 22:22:18 · 2773 阅读 · 0 评论 -
(五)可重入锁ReentrantLock的底层原理实现?
一、先整体了解一下重入锁ReentrantLock的大体思路?先通过一张图,了解一下ReentrantLock的关系网(就好比看一个人NB不NB得先看他周围的人和家里的亲戚够不够NB,现在就开始看看ReentrantLock这个“家伙”有多牛逼!),先上图 首先ReentrantLock继承了他爸爸的AbstractQueuedSynchronizer的财产,这个人物有什么来历请看上一...原创 2018-08-15 14:09:39 · 10776 阅读 · 0 评论 -
(四)深入理解线程池底层原理
如何理解线程池的工作机制和原理?(1)线程池是用来干嘛的,用它有什么好处,怎么能更好的去用线程池?线程池是用来干嘛的? 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 使用线程池的好处...原创 2018-08-10 16:37:11 · 16009 阅读 · 2 评论 -
(三)AbstractQueuedSynchronizer(AQS)的底层原理的实现?
AQS到底是个什么东西?他能用来干嘛?他的实现原理是怎样的?1. 首先AQS是一个抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架(其实说白了,就是说当有多个线程时,为了更好的控制并发,可以把AQS看成是一个正在管理挂号买东西排队的管理员,由AQS来进行对这个排队的人员(也就是把线程看成节点)进行判断排队的人有没有权利去买东西)2. 他其实不是说可以单独来实现一个什么功...原创 2018-07-29 13:17:06 · 4499 阅读 · 3 评论 -
(一)volatile 实现原理
volatile 实现原理一、首先volatile不同于其他的synchronized之类的锁,它是一种轻量级的锁,他加锁是加在变量上的,而且是基于JMM的基础上,在volatile修饰的共享变量进行写操作的时候会多出Lock前缀的指令(具体的大家可以使用一些工具去看一下,这里我就只把结果说出来)。我们想这个Lock指令肯定有神奇的地方,那么Lock前缀的指令在多核处理器下会发现什么事情了?主...原创 2018-07-19 00:01:11 · 547 阅读 · 0 评论 -
(十)关于final实现的底层原理
(1)对于final域,编译器和处理器要遵守两个重排序规则在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。(2)写final域的重排序规则禁止把final域的写重排序到构造函数之外。这个规则的实现包含两个方面JMM禁止编译器把f...原创 2019-09-05 00:28:47 · 2888 阅读 · 0 评论