- 浏览: 254309 次
- 性别:
- 来自: 北京
博客专栏
-
Java并发包源码解析
浏览量:100280
最新评论
-
746238836:
整个RingBuffer内部做了大量的缓存行填充,前后各填充了 ...
disruptor-3.3.2源码解析(2)-队列 -
xiangshouxiyang:
群加不了。。。
Jdk1.7 ForkJoin框架源码解析汇总 -
有贝无患:
acquire方法里面为什么tryAcquire会被调用多次 ...
Jdk1.6 JUC源码解析(6)-locks-AbstractQueuedSynchronizer -
zwy_qz:
library_call.cpp 里面的内联操作 inline ...
Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX -
sunwang810812:
您好,正在学习您的文章,中间有一段,一直没明白:“privat ...
Jdk1.6 JUC源码解析(6)-locks-AbstractQueuedSynchronizer
文章列表
Jdk1.7 ForkJoin框架源码解析汇总
Jdk1.7 JUC源码增量解析(2)-ForkJoin-框架概览
Jdk1.7 JUC源码增量解析(3)-ForkJoin-非ForkJoin任务的执行过程
Jdk1.7 JUC源码增量解析(4)-ForkJoin-ForkJoin任务的fork/join过程
Jdk1.7 JUC源码增量解析(5)-ForkJoin-ForkJoin框架其他过程及方法
完毕!
欢迎加入扣扣群一起交流 329019348(高级交流) 51317874(初级交流+灌水)
...
disruptor-3.3.2源码解析汇总
disruptor-3.3.2源码解析(1)-序列
disruptor-3.3.2源码解析(2)-队列
disruptor-3.3.2源码解析(3)-发布事件
disruptor-3.3.2源码解析(4)-处理事件
disruptor-3.3.2源码解析(5)-框架支持
完毕!
欢迎加入扣扣群一起交流 329019348(高级交流) 51317874(初级交流+灌水)
Jdk1.6 集合框架源码解析汇总
非并发:
Jdk1.6 Collections Framework源码解析(1)-ArrayList
描述:动态扩容的数组。
Jdk1.6 Collections Framework源码解析(2)-LinkedList
描述:双向链表。
Jdk1.6 Collections Framework源码解析(3)-ArrayDeque
描述:动态扩容的数组 + 头尾指针。
Jdk1.6 Collections ...
Jdk1.6 JUC源码解析汇总
Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX
Jdk1.6 JUC源码解析(2)-atomic-AtomicXXXArray
Jdk1.6 JUC源码解析(3)-atomic-AtomicXXXFieldUpdater
Jdk1.6 JUC源码解析(4)-atomic-AtomicStampedReference、AtomicMarkableReference
Jdk1.6 JUC源码解析(5)-locks-LockSupport
Jdk1.6 JUC源码解析(6)-locks-Abst ...
Jdk1.6 Collections Framework源码解析(12)-TreeMap、TreeSet
作者:大飞
功能简介:
TreeMap是一种有序的Map(K,V)容器,Key在容器中按照某种顺序排列,该顺序由给定的比较器或者Key自身的顺序来决定。
在TreeMap内部,所有的Key由红黑 ...
Jdk1.6 Collections Framework源码解析(11)-EnumSet
作者:大飞
功能简介:
EnumSet是一种针对Enum类型提供的特殊的Set,每个EnumSet只能基于一个Enum类型来建立。
EnumSet内部采用位域的方式建立(相当于bit数组),所以操作起来非常高效(几乎所有的基本操作都能在常数时间内完成),包括retainAll和retainAll这种批量操作也一样。
EnumSet的迭代器中元素顺序按照Enum的自然序(即定义顺序)排列;迭代器是弱一致的,不会抛出ConcurrentModificationException。
E ...
Java与锁的一些简单总结
作者:大飞
前言
从开始写Java到现在,从开始不知道锁是什么,怎么用,更不知道为什么要用。到现在能够在必要的场景下正确的使用一些锁。这过程中经历了对锁的不断尝试和理解,这 ...
关于Java String的一些总结
作者:大飞
不变模式设计
String是典型的不变模式设计。主要体现在两点:
1.String Class由final修饰,保证了无法产生可改变String语义的子类。
2.一些有"修改"行为的方法都会产生新的String实例,如concat、replace等方法。
==相关的问题
看一些常见的判断String相等的问题,给一段代码:
public class StringEqualsTest {
public static fi ...
Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator
作者:大飞
功能简介:
LongAdder是jdk1.8提供的累加器,基于Striped64实现。它常用于状态采集、统计等场景。AtomicLong也可以用于这种场景,但在线程竞争激烈的情况下,LongAdder要比AtomicLong拥有更高的吞吐量,但会耗费更多的内存空间。
LongAccumulator和LongAdder类似,也基于Striped64实现。但要比LongAdder更加灵活(要传入一个函数接口),LongAdder相当于是LongAccumulat ...
Jdk1.8 JUC源码增量解析(1)-atomic-Striped64
作者:大飞
功能简介:
Striped64是jdk1.8提供的用于支持如Long累加器,Double累加器这样机制的基础类。
Striped64的设计核心思路就是通过内部的分散计算来避免竞争(比如多线程CAS操作时的竞争)。
Striped64内部包含一个基础值和一个单元哈希表。没有竞争的情况下,要累加的数会累加到这个基础值上;如果有竞争的话,会将要累加的数累加到单元哈希表中的某个单元里面。所以整个Striped64的值包括基础值和单元哈希表中所有单元的值的总和。
源码分析:
先看一下内 ...
Jdk1.7 JUC源码增量解析(6)-Phaser
作者:大飞
功能简介:
Phaser是jdk1.7提供的类似于CyclicBarrier和CountDownLatch的同步机制。
它支持更灵活的使用方式:1.使用过程中可以随时注册和注销参与者;2.不同于CyclicBarrier,分离出"到达"和"等待"机制;3.支持结束,默认情况下,当没有参与者的时候Phaser就结束了;4.支持层级Phaser结构;5.提供针对内部状态的监控方法;
源码分析:
先看一下内部结构:
/**
* 主状态,分为 ...
Jdk1.7 JUC源码增量解析(5)-ForkJoin-ForkJoin框架其他过程及方法
作者:大飞
概述:
这篇会看一下ForkJoin框架的其他过程,如取消任务、关闭Pool,以及前面没分析到一些方法。
源码分析:
前面我们看到,ForkJoinTask本身也是Future的实现,所以也会有取消过程,看下实现:
public boolean cancel(boolean mayInterruptIfRunning) {
return setCompletion(CANCELLED) == CANCELLED;
...
Jdk1.7 JUC源码增量解析(4)-ForkJoin-ForkJoin任务的fork/join过程
作者:大飞
概述:
这篇通过分析一个ForkJoin任务的执行过程来分析ForkJoin的相关代码,主要侧重于分裂(fork)/合并(join)过程。
源码分析:
还是先看一个代码示例,这个示例介绍篇出现过,这里只贴出任务代码:
public class SumTask extends RecursiveTask<Long>{
private static final int THRESHOLD = 10;
p ...
Jdk1.7 JUC源码增量解析(3)-ForkJoin-非ForkJoin任务的执行过程
作者:大飞
概述:
这篇通过分析一个非ForkJoin(Runnable或者Callable)任务的执行过程来分析ForkJoin的相关代码,注意这里说的非ForkJoin任务实际上也是ForkJoinTask,只是没有分裂(fork)/合并(join)过程。
源码分析:
我们看一个非ForkJoin任务的代码示例:
public static void main(String[] args) {
ForkJoinPool forkJoi ...
Jdk1.7 JUC源码增量解析(2)-ForkJoin-框架概览
作者:大飞
ForkJoin框架是什么?
ForkJoin框架是jdk1.7提供的一个并行计算框架。
ForkJoin框架能干什么?
首先ForkJoin框架是针对一些符合ForkJoin模型的任务而设计的,那什么是ForkJoin模型呢?看个图先:
注:图片来之https://en.wikipedia.org/wiki/Fork%E2%80%93join_model
ForkJoin模型是指一些任务在执行过程中会 ...