![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java8并发工具类源码解析
孙大圣666
这个作者很懒,什么都没留下…
展开
-
Java8 Stream API 之 IntPipeline(三) 源码解析
目录1、reduce /collect2、sum /min /max /count /average /summaryStatistics3、AbstractTask4、ReduceTask5、AbstractShortCircuitTask6、FindTask7、MatchTask8、Spliterator 本篇博客继续上一篇《Java8 Stream API 之 IntPipeline(二) 源码解析》讲解reduce / collect...原创 2020-06-17 17:56:46 · 491 阅读 · 0 评论 -
Java8 Stream API 之 IntPipeline(二) 源码解析
目录1、map /flatMap /mapToObj /mapToLong /mapToDouble /asLongStream /asDoubleStream 2、limit /skip3、sorted4、distinct /boxed5、findFirst /findAny6、anyMatch /allMatch /noneMatch7、iterator /spliterator8、close /onClose 本篇博...原创 2020-06-17 09:53:40 · 411 阅读 · 0 评论 -
Java8 Stream API 之 IntPipeline(一) 源码解析
目录一、PipelineHelper / AbstractPipeline二、Sink三、IntPipeline1、filter /peek2、forEach /forEachOrdered3、ForEachOps4、测试用例5、IntStream range/rangeClosed6、ForEachTask7、ForEachOrderedTask本篇博客继续上一篇《Java8 Stream API 之 IntStream 用法全解》探讨IntPipeline..原创 2020-06-13 22:03:25 · 952 阅读 · 0 评论 -
Java8 Stream API 之 IntStream 用法全解
目录1、创建int流2、filter /map /flatMap /peek3、mapToObj /mapToLong / mapToDouble/asLongStream /asDoubleStream4、forEach /forEachOrdered5、 reduce /collect6、distinct /sorted /limit /skip7、sum /min /max /count /average /summaryStatisti...原创 2020-05-31 15:09:20 · 21221 阅读 · 2 评论 -
Java8 CompletableFuture(二) 源码解析
目录1、uniWhenCompleteStage /UniWhenComplete2、uniHandleStage /UniHandle3、uniExceptionallyStage /UniExceptionally4、biApplyStage /BiApply5、biAcceptStage /BiAccept6、biRunStage /BiRun7、orApplyStage /OrApply8、orAcceptStage /OrAccept9、or...原创 2020-05-19 23:50:26 · 1237 阅读 · 0 评论 -
Java8 CompletableFuture(一) 源码解析
目录1、定义2、supplyAsync /runAsync3、completeNull /completeValue /completeThrowable /completeRelay4、thenApply/thenAccept /thenRun5、UniApply /UniAccept /UniRun6、postComplete / postFire7、get / join / getNow / cancel8、Signaller上一篇《Java8...原创 2020-05-18 17:42:43 · 1974 阅读 · 0 评论 -
Java8 CompletableFuture 用法全解
目录一、创建异步任务1、Future.submit2、supplyAsync /runAsync二、异步回调1、thenApply /thenApplyAsync2、thenAccept /thenRun3、exceptionally4、whenComplete5、handle三、组合处理1、thenCombine /thenAcceptBoth /runAfterBoth2、applyToEither /acceptEither /run...原创 2020-05-15 19:06:12 · 112539 阅读 · 29 评论 -
Java8 ForkJoinTask 源码解析
目录1、定义2、fork3、join /quietlyJoin4、invoke /quietlyInvoke5、complete / quietlyComplete/completeExceptionally6、recordExceptionalCompletion /clearExceptionalCompletion /getException7、invokeAll8、get9、tryUnfork /reinitialize 本篇博客讲解...原创 2020-05-14 17:26:07 · 1651 阅读 · 0 评论 -
Java8 ForkJoinPool(三) 源码解析
目录1、registerWorker /deregisterWorker2、runWorker3、shutdown /shutdownNow /awaitTermination4、awaitQuiescence /quiesceCommonPool5、awaitJoin /helpComplete /externalHelpComplete6、hasQueuedSubmissions /getQueuedSubmissionCount /getQueuedTaskC...原创 2020-05-11 20:12:58 · 1388 阅读 · 0 评论 -
Java8 ForkJoinPool(二) 源码解析
目录 1、定义2、构造方法3、invoke /execute /submit / invokeAll4、externalPush /tryExternalUnpush5、lockRunState /unlockRunState 本篇博客重点讲解ForkJoinPool的定义及其提交任务到线程池的实现。1、定义 ForkJoinPool的类继承关系如下: 该类包含的属性如下: //最高的16位表示获取线程数,第二个...原创 2020-05-11 20:08:11 · 1058 阅读 · 0 评论 -
Java8 ForkJoinPool(一) 源码解析
目录一、ForkJoinWorkerThread1、定义2、run /getPoolIndex二、InnocuousForkJoinWorkerThread三、ForkJoinWorkerThreadFactory四、WorkQueue1、定义2、push /pop /poll /pollAt /peek /tryUnpush3、runTask4...原创 2020-04-28 18:46:50 · 2613 阅读 · 2 评论 -
Java8 RecursiveAction / RecursiveTask / CountedCompleter 源码解析
目录一、RecursiveAction1、普通的递归实现2、非递归实现二、RecursiveTask三、CountedCompleter1、定义2、BulkTask3、ForEachMappingTask4、ReduceEntriesTask5、SearchEntriesTask6、complete /tryComplete /helpComple...原创 2020-04-25 17:13:30 · 1345 阅读 · 0 评论 -
Java8 ScheduledThreadPoolExecutor 源码解析
目录一、ScheduledFutureTask1、定义2、compareTo /getDelay /isPeriodic3、run /cancel二、DelayedWorkQueue1、定义2、add /put /offer3、peek /poll /take4、remove /clear /drainTo5、iterator /...原创 2020-04-23 23:01:12 · 688 阅读 · 0 评论 -
Java8 ThreadPoolExecutor 源码解析
目录1、定义2、Worker3、构造方法4、addWorker5、execute6、CallerRunsPolicy /AbortPolicy /DiscardPolicy /DiscardOldestPolicy7、runWorker8、shutdown /shutdownNow /awaitTermination9、purge /remove...原创 2020-04-22 22:42:37 · 549 阅读 · 0 评论 -
Java8 AbstractExecutorService 和 FutureTask 源码解析
目录一、AbstractExecutorService1、定义2、submit3、invokeAll4、invokeAny二、FutureTask1、定义2、构造方法3、get4、run /runAndReset5、cancel三、ExecutorCompletionService1、定义2、submit3、take /pol...原创 2020-04-22 17:03:46 · 2128 阅读 · 0 评论 -
Java8 Phaser 源码解析
目录一、使用1、基本概念2、实现CountDownLatch的效果3、实现CyclicBarrier的效果4、灵活调整parties5、onAdvance6、父子Phaser二、源码解析1、定义2、构造方法3、register /bulkRegister4、arrive /arriveAndDeregister /arriveAndAwai...原创 2020-04-21 21:18:07 · 836 阅读 · 0 评论 -
Java8 Semaphore与Exchanger 源码解析
目录一、Semaphore1、使用2、定义3、acquire /acquireUninterruptibly /acquireUninterruptibly /tryAcquire4、release5、availablePermits /drainPermits /reducePermits二、Exchanger1、使用2、定义3、exchan...原创 2020-04-20 20:20:52 · 511 阅读 · 0 评论 -
Java8 CopyOnWriteArrayList与CopyOnWriteArraySet 源码解析
目录一、CopyOnWriteArraySet二、CopyOnWriteArrayList1、定义2、构造方法3、get /indexOf /lastIndexOf/ contains4、add / set /addIfAbsent5、addAll /addAllAbsent6、remove /removeAll /removeIf /re...原创 2020-04-19 17:07:18 · 602 阅读 · 0 评论 -
Java8 ConcurrentSkipListMap与ConcurrentSkipListSet (二) 源码解析
目录1、compute /merge2、higher /lower /ceiling / floor3、first/last4、pollFirstEntry /pollLastEntry5、keySet /descendingKeySet / Iter6、tailMap /headMap /subMap /SubMap 本篇博客继续上一...原创 2020-04-19 12:34:12 · 350 阅读 · 0 评论 -
Java8 ConcurrentSkipListMap与ConcurrentSkipListSet (一) 源码解析
目录一、ConcurrentSkipListSet二、ConcurrentSkipListMap1、定义2、Node /Index /HeadIndex3、SkipList 跳跃表4、构造方法5、put /putIfAbsent6、remove /replace /replaceAll /clear7、get /getOrDefault...原创 2020-04-18 21:12:51 · 1075 阅读 · 1 评论 -
Java8 ConcurrentHashMap(二) 源码解析
目录1、addCount2、tryPresize /helpTransfer3、transfer4、remove /replace/replaceAll /clear5、get /getOrDefault6、compute7、merge8、Traverser /keys /elements9、总结 本篇博客继续上一篇《Ja...原创 2020-04-17 17:20:18 · 360 阅读 · 1 评论 -
Java8 ConcurrentHashMap(一) 源码解析
目录1、定义2、Node /CounterCell /ForwardingNode /ReservationNode3、TreeNode4、TreeBin5、构造方法6、put /putIfAbsent /putAll7、treeifyBin /untreeify ConcurrentHashMap表示一个线程安全的,基于分段锁实...原创 2020-04-16 21:44:06 · 471 阅读 · 0 评论 -
Java8 ConcurrentLinkedDeque 源码解析
目录1、定义3、add /offer /addAll4、peek /poll /remove5、unlinkFirst /unlinkLast6、unlink7、iterator /descendingIterator ConcurrentLinkedDeque表示一个无固定容量的,线程安全的,基于CAS而非ReentrantLock互斥锁实现...原创 2020-04-15 17:43:48 · 475 阅读 · 0 评论 -
Java8 LinkedBlockingDeque 源码解析
目录1、定义2、构造方法3、add /offer /put4、poll /take /peek5、remove / clear /drainTo6、push /pop7、iterator / descendingIterator LinkedBlockingDeque表示一个可选固定容量的,线程安全的、基于链表和ReentrantLock...原创 2020-04-14 12:00:05 · 482 阅读 · 0 评论 -
Java8 ConcurrentLinkedQueue和LinkedTransferQueue 源码解析
目录一、ConcurrentLinkedQueue1、定义2、构造方法3、add / offer /addAll4、peek /poll /remove5、iterator /Itr二、LinkedTransferQueue1、定义2、add /offer / put3、take /poll /peek4、remove / drai...原创 2020-04-13 21:45:50 · 668 阅读 · 0 评论 -
Java8 PriorityBlockingQueue和SynchronousQueue 源码解析
PriorityBlockingQueue表示一个支持自动扩容的,线程安全的优先级队列,队列底层实现跟PriorityQueue是一致的,都是基于二叉堆。一、PriorityBlockingQueue1、定义 PriorityBlockingQueue的类继承关系如下:跟ArrayBlockingQueue实现的接口是一致的,相关方法的描述可以参考《Java...原创 2020-04-12 22:12:47 · 384 阅读 · 0 评论 -
Java8 LinkedBlockingQueue和DelayQueue 源码解析
目录一、LinkedBlockingQueue1、定义2、构造方法3、put /offer4、peek /poll /take5、remove /clear /drainTo6、iterator /Itr7、跟ArrayBlockingQueue的实现差异总结二、DelayQueue1、定义2、使用3、add / offe...原创 2020-04-09 16:57:00 · 661 阅读 · 0 评论 -
Java8 ArrayBlockingQueue 源码解析
目录1、定义2、构造方法3、add / offer /put4、poll /take /peek5、remove /clear /drainTo6、iterator /Itr /Itrs7、doSomeSweeping /register8、queueIsEmpty /elementDequeued /takeIndexWrappe...原创 2020-04-08 16:12:12 · 639 阅读 · 0 评论 -
Java8 atomic包 源码解析
目录一、AtomicLong二、AtomicLongArray三、AtomicLongFieldUpdater四、LongAdder1、使用2、定义3、add4、sum /reset /sumThenReset五、LongAccumulator六、AtomicMarkableReference 和 AtomicStampedReference ...原创 2020-04-07 17:50:51 · 599 阅读 · 0 评论 -
Java8 StampedLock(二) 源码解析
目录一、WriteLockView1、lock /lockInterruptibly2、tryLock3、unlock4、unlockWrite /tryUnlockWrite二、ReadLockView1、lock /lockInterruptibly2、tryLock3、unlock4、unlockRead /tryUnlockRead...原创 2020-04-06 18:13:38 · 392 阅读 · 0 评论 -
Java8 StampedLock(一) 源码解析
目录一、定义二、使用1、读写锁2、锁重入3、非公平锁4、乐观读锁5、锁转换StampedLock是Java8引入的,对ReentrantReadWriteLock的一个改良和扩展,其底层实现不再基于AbstractQueuedSynchronizer了,本篇博客就来详细探讨该类的定义和使用。一、定义 StampedLock没有直接实现ReadWri...原创 2020-04-06 17:13:33 · 1955 阅读 · 1 评论 -
Java8 ReentrantReadWriteLock 源码解析
目录一、定义二、使用三、WriteLock1、lock/lockInterruptibly2、tryLock3、unlock四、ReadLock1、lock2、lockInterruptibly3、tryLock4、unlock五、NonfairSync /FairSyncReentrantReadWriteLock是一个可重入...原创 2020-04-04 21:52:02 · 525 阅读 · 0 评论 -
Java8 ConditionObject 源码解析
目录1、定义 2、使用3、await /awaitUninterruptibly4、await / awaitNanos /awaitUntil5、signal /signalAll6、其他方法实现总结 上一篇《Java8 ReentrantLock 源码解析》中主要讲解了lock和unlock相关方法的实现,本篇讲解Reentra...原创 2020-04-04 14:36:10 · 942 阅读 · 3 评论 -
Java8 CountDownLatch与CyclicBarrier 源码解析
目录一、CountDownLatch1、使用2、实现3、使用synchronized改造二、CyclicBarrier1、使用2、定义3、实现4、使用synchronized改造 CountDownLatch表示一个计数器,子线程执行完毕会调用countDown方法将计数减1,主线程调用await,一直等待直到计数变成0或者等待超时了,用于主...原创 2020-04-01 20:46:43 · 419 阅读 · 0 评论 -
Java8 ReentrantLock 源码解析
目录一、AbstractQueuedSynchronizer1、定义2、Unsafe objectFieldOffset和staticFieldOffset3、Node二、ReentrantLock1、acquireQueued2、lock3、lockInterruptibly4、tryLock5、unlock6、其他方法实现总结 R...原创 2020-04-03 21:40:59 · 840 阅读 · 0 评论