JUC源码分析
IMHB
造轮子真好玩,即使目前还是低级别的轮子
展开
-
从ReentrantLock开始入手AQS源码
ReentrantLock是依赖于AQS的一个锁的实现,它是一把独占锁,并且是一把可重入锁。本人看源码的功底比较差,还是只能从经常用到的东西入手。那么就开始咯。 1.构造器 //非公平锁 public ReentrantLock() { sync = new NonfairSync(); } //可以指定公平锁与否(其实两种锁的很多地方应该是相似的,因此我们先考虑非公平锁) ...原创 2018-07-16 23:03:52 · 184 阅读 · 0 评论 -
从ReentrantReadWriteLock开始入手AQS源码
ReentrantReadWriteLock是一把读写锁,其基本实现依赖于两把锁,读锁和写锁,读锁之间能够进入,写锁之间互斥,这样对于锁的操作更加细粒度。首先要学习任何东西,都得了解他是用来干嘛的,其次知道他的流程,接下来就是真正的深入研究。下面放出一个我觉得不错的流程讲解:轻松掌握java读写锁(ReentrantReadWriteLock)的实现原理 1.构造器 public Reent...原创 2018-07-19 16:32:28 · 227 阅读 · 1 评论 -
CountDownLatch源码分析
首先,我就不介绍CountDownLatch了,如果不知道的同学,可以参考一下:https://www.cnblogs.com/bqcoder/p/6089101.html //这就是平时的使用方式了 /** * (1)看一下构造方法 * (2)看一下await()方法 * (3)看一下countDown()方法 */ CountDownLatch cdl=new CountDownL...原创 2018-09-08 20:32:01 · 97 阅读 · 0 评论 -
线程池源码分析(1)execute()方法
接下来,我将讲解线程池的源码分析。作为新手入门的手册的话,我就选取曾经自己看的文章,写的相当不错。https://www.jianshu.com/p/210eab345423 1.从最简单的单线程-线程池入手。 //一点点的进行分析。首先,放出第一种用法。 ExecutorService executor=Executors.newSingleThreadExecutor(); //只需要实...原创 2018-09-15 17:15:04 · 394 阅读 · 0 评论 -
CyclicBarrier源码分析
接下来就分析一下CyclicBarrier,如果有不了解CyclicBarrier的使用的话,给大家推荐一篇生动形象的入门博客: https://blog.csdn.net/carson0408/article/details/79471490 1.构造方法。 public CyclicBarrier(int parties, Runnable barrierAction) { i...原创 2018-09-09 23:10:02 · 108 阅读 · 0 评论 -
Semaphore源码分析
还是像之前,关于Semaphore的使用方法,我就不介绍了,依然提供一个博客地址供大家了解。https://blog.csdn.net/zzy7075/article/details/52095773 平常的使用的话: ` //permits是指允许进入的线程数量 Semaphore semaphore=new Semaphore(permits); semaphore.acquire()...原创 2018-09-12 09:00:20 · 152 阅读 · 0 评论 -
线程池源码分析(2)submit
线程池的话,其实就那么几种,前面已经分析过了。大体的流程已经清楚了。至于其他几种线程池的区别(其实区别就在于队列的放入,放出的处理不同)的话,就可以放在后面来慢慢看看区别。接下来,今天要看的是能够得到返回值的线程任务—Callable。 //先看一下平常的使用方式。 Callable job = new YourJob(); Future<Object> future = exe...原创 2018-09-17 08:53:43 · 262 阅读 · 0 评论 -
Condition源码解析—依赖ReentrantLock
condition的几个api和object的几个方法非常相似,但是对于锁的控制力度更加强大了,比如控制粒度更细了,提供了更多的功能: 在一定时间内等待..等等。 那么就先来看一下平时的使用吧。 ReentrantLock lock = new ReentrantLock(); Condition condition= lock.newCondition();//构造方法,基本属于什么都没...原创 2018-09-10 09:21:17 · 256 阅读 · 0 评论 -
java-延时队列-DelayQueue源码分析
首先延时队列的发现是基于一个实际场景:如何处理超时的订单 这个问题很容易想到解决方案 (1)写一个定时任务,轮询超时的订单(缺点:性能消耗过大,对数据库造成压力) (2)放入延时队列当中 那么我就选择一下延时队列,看一下java的实现吧。 贴出一个入门的博客:https://www.cnblogs.com/barrywxx/p/8525907.html 然后我们就以这个博客来入手源码 ...原创 2018-12-21 17:09:49 · 335 阅读 · 0 评论