Java并发包JUC-源码解读
文章平均质量分 94
Java并发包JUC,源码解读
yaMa_码子
码子的源码之路
展开
-
ArrayBlockingQueue源码-JUC阻塞队列1
JUC-阻塞队列前面写了好久片跟锁有关的博客,就是为了接下来的JUC系列文章,对锁熟悉的看JUC事半功倍了,我是强烈建议大家看下我之前的两篇关于Java锁的文章ReentrantLock可冲入锁 以及条件锁,没办法lock是整个JUC的基础。我们今天主要看下阻塞队列的几个实现类:先看最简答的ArrayBlockQueue...原创 2018-07-04 19:18:41 · 1766 阅读 · 0 评论 -
LinkedBlockingQueue源码-JUC阻塞队列2
LinkedBlockingQueue源码-JUC阻塞队列2上篇讲过ArrayBlockingQueue源码原创 2018-07-12 19:06:58 · 851 阅读 · 0 评论 -
PriorityBlockingQueue源码-JUC阻塞队列3
PriorityBlockingQueue源码-JUC阻塞队列3它是我们要说的第三个BlockingQueue原创 2018-07-13 16:23:57 · 210 阅读 · 0 评论 -
Semaphore源码-JUC线程同步工具1
Semaphore源码-JUC线程同步工具1之前JAVA锁Lock说过一句话线程获取到了锁就是AQS得成员state+1了,今天讲的信号量Semaphore还是跟它有关系。何为信号量Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acq...原创 2018-07-13 17:41:20 · 953 阅读 · 0 评论 -
CountDownLatch源码-JUC线程同步工具2
CountDownLatch源码-JUC线程同步工具2上篇博文将的线程同步工具信号量Semaphore源码 以停车车辆坑位表示并发量来展开阐述的。何为CountDownLatchCountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,...原创 2018-07-13 19:09:56 · 851 阅读 · 0 评论 -
CyclicBarrier源码-JUC线程同步工具3
CyclicBarrier源码-JUC线程同步工具3这是线程同步的第三个工具类,跟前文CountDownLatch 如果理解不深入,会觉得他们很相似,觉得都是一个主线程在等待其它子线程完成自己的任务,主线程运行。本文会介绍它们两个的区别,以及内部实现。何为CyclicBarrier CyclicBarrier 是一个让一系列线程集合互相等待直到一个公共屏障点(barrier point)...原创 2018-07-16 16:45:43 · 664 阅读 · 0 评论 -
CompletionService源码分析
CompletionService源码分析本文假设你已经会使用线程池以及了解FutureTask了,不熟悉的源码强烈建议看下之前的博文Java线程池源码分析,读完在读本片博文轻松加愉快。还是总结下任务的提交流程: 1)submit(taks) task为Callable或者Runnable。 2)任务包装成FutureTask,执行executor(futureTask)。 ...原创 2018-07-18 11:52:21 · 854 阅读 · 0 评论 -
CopyOnWriteArrayList源码分析
CopyOnWriteArrayList源码分析容器一般分为三类:普通容器,同步容器,并发容器。 对于容器我们每天都再用,无非就是对容器的增删改查和迭代,单个操作都没有问题,加上多线程有修改、有迭代、有查询。如果你遇到如下问题但对原理说不清楚,还是建议先看下我之前的博文Java容器迭代时修改问题及方案 问题诸如: 迭代时没有则添加抛出异常ConcurrentModification...原创 2018-07-18 16:39:38 · 1503 阅读 · 1 评论 -
Java分布式锁(一行代码搞定)
Java分布式锁(一行代码搞定)前面几篇文章都是介绍的java单机锁,但是目前很多应用都是分布式的(不同jvm进程),单机锁已经不能满足应用的需求了...原创 2018-06-20 17:49:50 · 6336 阅读 · 1 评论 -
Java锁lock源码分析(三)读写锁
Java锁lock源码分析(三)读写锁前文Java锁Lock源码分析(一)提过在java的Lock中获取锁就表示AQS的volatile int state =1表示获取到了独占锁,state>1表示当前线程重入锁(获取锁了再次获取到了锁)即大于0就表示获取到了独占锁。独占就意味着排队,失败,系统吞吐量下降,用户体验下降等等。有些情况不要独占,比如说读与读不互斥,读与写互斥,写与写互...原创 2018-06-19 16:32:10 · 1445 阅读 · 2 评论 -
Java锁Lock源码分析(二)条件锁
本篇博文主要分析条件锁的源码实现、以及状态两个队列的变化: 1)Condition的使用场景 2)lock方法的队列(FIFO双向无环链表)官方点说是同步队列 sync queue 3)condition队列(FIFO单向队列) 官方点说是条件队列 condition queue 4) await和signal方法被调用两个队列的变化图本文是依赖于上篇博文Java锁...原创 2018-03-01 12:06:43 · 2769 阅读 · 2 评论 -
Java锁Lock源码分析(一)
Java中的锁Lock源码分析(一)Java中的锁有很多,同时也是了整个并发包的基础,可以说明白了锁整个并发包你也就能明白一半了,如果之前你有所了解的话java中的锁你或许对这些名词有些概念:独占锁、共享锁公平锁、非公平锁、重入锁条件锁读写锁本节要点: 0)锁是如何表示的(怎么样就代表获取到了锁) 1)volatile在作用 2)lock的源码分析 ...原创 2018-02-27 15:59:26 · 6141 阅读 · 2 评论 -
ThreadLocal源码分析
ThreadLocal源码一些思考ThreadLocal经常出现在各大框架:Hibernate/struts2/spring,主要完成的功能就是同一线程内,变量在不同方法中(非入参形式)传递,不同线程之间传递的变量互不影响。这里所说的变量比如session,connection等等,下图就是对这句话的完美阐述:...原创 2019-09-17 11:22:55 · 194 阅读 · 0 评论