多线程 透彻理解Java并发编程系列 J.U.C并发包,即java.util.concurrent包,是JDK的核心工具包,是JDK1.5之后,由 Doug Lea实现并引入。 整个java.util.concurrent包,按照功能可以大致划分如下:juc-locks 锁框架、juc-atomic 原子类框架、juc-sync 同步器框架、juc-collections 集合框架、juc-executors 执行器框架。 2018-10-04 浏览(5,414) 评论(0) 阅读全文
Java多线程进阶(四六)—— J.U.C之补遗:ThreadLocalRandom `ThreadLocalRandom`是在JDK1.7之后引入的一个类,为`Random`的一个子类,在多线程环境中相较于`Random`来说它会有更小的开销和争用。 2019-07-08 浏览(528) 评论(0) 阅读全文
Java多线程进阶(四五)—— J.U.C之executors框架:CompletionService实现 `CompletionService`是对于Task进行异步处理之后获取结果的Service,在开始本章节之前需要有`Future`和`FutureTask`及`Executor`(参见`ThreadPoolExecutor`)的相关知识。JDK中提供了`ExecutorCompletionService`作为`CompletionService`的默认实现,本章会以`ExecutorComple 2019-07-07 浏览(560) 评论(0) 阅读全文
Java多线程进阶(四四)—— J.U.C之executors框架:Fork/Join框架实现 我们深入F/J框架的实现细节,看看ForkJoinPool线程池究竟有何特殊之处,F/J框架的整个任务调度流程又是怎样的。 2018-11-16 浏览(3,578) 评论(0) 阅读全文
Java多线程进阶(四三)—— J.U.C之executors框架:Fork/Join框架原理 算法领域有一种基本思想叫做分治,所谓分治就是将一个难以直接解决的大问题,分割成一些规模较小的子问题,以便各个击破,分而治之。基于“分治”的思想,J.U.C在JDK1.7时引入了一套Fork/Join框架。 2018-11-15 浏览(6,059) 评论(0) 阅读全文
Java多线程进阶(四二)—— J.U.C之executors框架:Future模式 Future模式,可以让调用方立即返回,然后它自己会在后面慢慢处理,此时调用者拿到的仅仅是一个凭证,调用者可以先去处理其它任务,在真正需要用到调用结果的场合,再使用凭证去获取调用结果。这个凭证就是这里的Future。 2018-11-14 浏览(3,446) 评论(0) 阅读全文
Java多线程进阶(四一)—— J.U.C之executors框架:ScheduledThreadPoolExecutor 在executors框架概述一节中,我们曾经提到过一种可对任务进行延迟/周期性调度的执行器(Executor),这类Executor一般实现了ScheduledExecutorService这个接口。ScheduledExecutorService在普通执行器接口(ExecutorService)的基础上引入了Future模式,使得可以限时或周期性地调度任务。 2018-11-13 浏览(3,851) 评论(0) 阅读全文
Java多线程进阶(四十)—— J.U.C之executors框架:ThreadPoolExecutor 在juc-executors框架概述的章节中,我们已经简要介绍过ThreadPoolExecutor了,通过Executors工厂,用户可以创建自己需要的执行器对象。ThreadPoolExecutor,它是J.U.C在JDK1.5时提供的一种实现了ExecutorService接口的执行器,或者说线程池。 2018-11-12 浏览(4,050) 评论(0) 阅读全文
Java多线程进阶(三九)—— J.U.C之executors框架:executors框架概述 juc-executors框架是整个J.U.C包中类/接口关系最复杂的框架,真正理解executors框架的前提是理清楚各个模块之间的关系,高屋建瓴,从整体到局部才能透彻理解其中各个模块的功能和背后的设计思路。 网上有太多文章讲executors框架,要么泛泛而谈,要么一叶障目不见泰山,缺乏整体视角,很多根本没有理解整个框架的设计思想和模块关系。本文将对整个executors框架做综述,介绍各个 2018-11-11 浏览(3,658) 评论(0) 阅读全文
Java多线程进阶(三八)—— J.U.C之collections框架:LinkedTransferQueue LinkedTransferQueue是在JDK1.7时,J.U.C包新增的一种比较特殊的阻塞队列,它除了具备阻塞队列的常用功能外,还有一个比较特殊的transfer方法。 2018-11-10 浏览(3,202) 评论(0) 阅读全文