JUC原子类框架JUC即是指:java.util.concurrent包。
基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;
数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray ;
引用类型: AtomicReference, AtomicStampedRerence, Ato...
分类:
编程语言 时间:
2016-06-12 02:47:03
阅读次数:
227
一、前言 本篇是在分析Executors源码时,发现JUC集合框架中的一个重要类没有分析,SynchronousQueue,该类在线程池中的作用是非常明显的,所以很有必要单独拿出来分析一番,这对于之后理解线程池有很有好处,SynchronousQueue是一种阻塞队列,其中每个插入操作必须等待另一个 ...
分类:
其他好文 时间:
2016-06-06 16:28:07
阅读次数:
579
生产者消费者问题是Java并发中的常见问题之一,在实现时,一般可以考虑使用juc包下的BlockingQueue接口,至于具体使用哪个类,则就需要根据具体的使用场景具体分析了。本文主要实现一个生产者消费者的原型,以及实现一个生产者消费者的典型使用场景。 第一个问题:实现一个生产者消费者的原型。 第二 ...
分类:
编程语言 时间:
2016-06-02 18:03:57
阅读次数:
227
一、前言 在分析完了JUC的锁和集合框架后,下面进入JUC线程池框架的分析,下面给出JUC线程池的总体框架,之后再逐一进行分析。 二、JUC线程池框架图 说明:从上图可知,JUC线程池框架中的其他接口或类都直接或间接的继承了Executor接口,虽然Executors与其他类或者接口没有明显的关系, ...
分类:
编程语言 时间:
2016-06-01 19:54:56
阅读次数:
415
一、前言 分析完了ArrayBlockingQueue后,接着分析LinkedBlockingQueue,与ArrayBlockingQueue不相同,LinkedBlockingQueue底层采用的是链表结构,其源码也相对比较简单,下面进行正式的分析。 二、LinkedBlockingQueue数 ...
分类:
数据库 时间:
2016-05-29 12:13:47
阅读次数:
304
一、前言 最近在做项目的同时也在修复之前项目的一些Bug,所以忙得没有时间看源代码,今天都完成得差不多了,所以又开始源码分析之路,也着笔记录下ConcurrentSkipListMap的源码的分析过程。 二、ConcurrentSkipListMap数据结构 抓住了数据结构,对于理解整个Concur ...
分类:
其他好文 时间:
2016-05-26 21:49:42
阅读次数:
301
ReentrantReadWriteLock基于AQS实现读写锁的同步:
1.利用共享模式实现读锁,独占模式实现写锁;
2.支持公平和非公平,非公平的情况下可能会出现读锁阻塞写锁的场景;
3.写锁阻塞写锁和读锁,读锁阻塞写锁;
4.写锁可以降级为读锁,读锁不能升级为写锁,只能先release再lock;
5.写锁支持condition条件;
6.读写锁都支持超时/中断lock;
...
分类:
其他好文 时间:
2016-05-18 18:02:27
阅读次数:
190
ReentrantLock可重入锁,使用比synchronized方便灵活,可作为替代使用:
1.支持公平/不公平锁;
2.支持响应超时,响应中断;
3.支持condition;
ReentrantLock实现了Lock接口,内部使用static类继承AQS实现独占式的api来实现这些功能,使用AQS的state来表示锁可重入次数:
之前学习AQS的时候说过请求和rele...
分类:
其他好文 时间:
2016-05-12 14:47:41
阅读次数:
189
AQS的conditionObject实现类似object的wait/notify/notify的功能,功能大概是:
1.object维护一个监视器和一个等待队列,condition对于一个lock可以有多个condition,对于每个condition维护一个条件队列;
2.提供wait/signal/signalall功能。
来个入门demo:
public class Conditi...
分类:
其他好文 时间:
2016-05-12 14:41:04
阅读次数:
217
上一次学习了ReetrantLock,是对AQS独占模式的,这次学习CountDownLatch,是共享模式api的实现。人生不死,学无止境。先看个demo吧:
import java.util.concurrent.CountDownLatch;
public class CountDownLatchTest {
private static CountDownLatch ...
分类:
其他好文 时间:
2016-05-12 12:25:20
阅读次数:
173