在JUC包中,线程池部分本身有很多组件,可以说是前面所分析的各种技术的一个综合应用。从本文开始,将综合前面的知识,逐个分析线程池的各个组件。 –Executor/Executors –Thread…
分类:JUC
Java多线程 -- JUC包源码分析13 -- Callable/FutureTask源码分析
关于Runnable,我们都已经很熟悉了。在上一篇,我们也分析了ThreadPoolExecutor用来执行任务的接口execute,如下所示: public interface Runnable { public ab…
Java多线程 -- JUC包源码分析14 -- ScheduledThreadPoolExecutor与DelayQueue源码分析
在前面的篇章中,我们分析了ThreadPoolExecutor,知道了execute和submit的内部实现原理,知道了Runnable/Callable的内在关系。 周期/非周期 AtFixedRate/WithFix…
Java多线程 -- JUC包源码分析15 -- SynchronousQueue与CachedThreadPool
在前面分析工具类Executors的时候,提到了CachedThreadPool:其线程数会无限增大,每来一个新请求,就会new一个Thread,其maxPoolSize = Integer.MAX。 其构造函数如下: …
Java多线程 -- JUC包源码分析16 -- Exchanger源码分析
上一篇所讲的SynchronousQueue,是2个线程之间单向的数据传输,一个put,一个take。 而今天所讲的Exchange,顾明思义,是双向的数据传输,2个线程在一个同步点,交换数据。 其使用方式,大致如下: …
Java多线程 -- JUC包源码分析18 -- ConcurrentSkipListMap(Set)/TreeMap(Set)/无锁链表
–为什么是SkipList,不是TreeMap的红黑树? –无锁链表的精髓 –ConcurrentSkipListMap –ConcurrentSkipListSet 为什…
Java多线程 -- JUC包源码分析19 -- ForkJoinPool/ForkJoinTask
JDK 1.7 提供了一个并行计算的框架,本文就来分析一下它在使用和实现原理上,和ThreadPool有什么区别。 何为Fork/Join? 我们在大学算法课本上,学过的一种基本算法就是:分治。其基本思路就是:把一个大的…
JUC系列之CyclicBarrier/CountDownLatch/Semaphore
CyclicBarrier 同步屏障,如果有人问你如何让N个线程同时之行某件事,请告诉他CyclicBarrier 那么他是如何来确保这一点的呢? 通过await使所有线程进入barrier。当达到预设计数器或await…
JUC系列之模拟抢票(N人同时抢票,票不足系统补仓,N-M人继续抢票)
下载 http://download.csdn.net/download/crazyzxljing0621/9969870 前言 10.1要去苏州玩。 9月初去携程买票,发现过几天才放票 现在可以预约抢票。 用…
Java JUC
Java JUC 简介 在Java 5.0 提供了java.util.concurrent(简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步IO 和轻量级…
JUC AbstractQueuedSynchronizer分析
什么是AQS AQS即AbstractQueuedSynchronizer的简称,是实现JUC(java.utils.concurrent包)同步组件的通用基础骨架,JDK中基于此骨架实现的同步组件主要包括Reentra…
JUC ReentrantLock 分析
基本介绍 ReentrantLock,可重入锁,基于AQS实现的互斥锁,在互斥锁之上支持可重入。可重入的意思是,同一个线程可以多次调用lock方法,而不会导致自己等待自己锁的释放。根据内部实现,分为公平性可重入锁和非公平…