摘要: 概述 LinkedBlockingQueue内部由单链表实现,只能从head取元素,从tail添加元素。添加元素和获取元素都有独立的锁,也就是说LinkedBlockingQueue是读写分离的,读写操作可以并行执行。LinkedBlockingQueue采用可重入锁(ReentrantLock)来 阅读全文
posted @ 2018-08-30 15:03 多读书多看报 阅读(52796) 评论(3) 推荐(13) 编辑
摘要: volatile关键字修饰的共享变量主要有两个特点:1.保证了不同线程访问的内存可见性 2.禁止重排序 在说内存可见性和有序性之前,我们有必要看一下Java的内存模型(注意和JVM内存模型的区分) 为什么要有java内存模型? 首先我们知道内存访问和CPU指令在执行速度上相差非常大,完全不是一个数量 阅读全文
posted @ 2018-08-27 15:22 多读书多看报 阅读(1463) 评论(0) 推荐(3) 编辑
摘要: ReentrantLock概述 ReentrantLock是Lock接口的实现类,可以手动的对某一段进行加锁。ReentrantLock可重入锁,具有可重入性,并且支持可中断锁。其内部对锁的控制有两种实现,一种为公平锁,另一种为非公平锁。ReentrantLock的实现原理为volatile+CAS 阅读全文
posted @ 2018-08-26 16:26 多读书多看报 阅读(1177) 评论(2) 推荐(0) 编辑
摘要: HashMap概述 HashMap存储的是key-value的键值对,允许key为null,也允许value为null。HashMap内部为数组+链表的结构,会根据key的hashCode值来确定数组的索引(确认放在哪个桶里),如果遇到索引相同的key,桶的大小是2,如果一个key的hashCode 阅读全文
posted @ 2018-08-17 14:01 多读书多看报 阅读(14215) 评论(10) 推荐(23) 编辑
摘要: 计算rdd的某个分区是从RDD的iterator()方法开始的,我们从这个方法进入 然后我们进入getOrCompute()方法中看看是如何进行读取数据或计算的 getOrElseUpdate()方方法的返回值类型如果是blockResult说明blockManager在本地或远程读取到了数据,或者 阅读全文
posted @ 2018-04-11 14:30 多读书多看报 阅读(285) 评论(0) 推荐(0) 编辑