赵计刚
每天进步一点点

随笔分类 -  Java并发包类源码解析

主要记录一下java.util.concurrent包下的常用类的用法和源码解析
第十五章 线程池的选用与线程数的指定
摘要:注意:本章主要参考自《大型分布式Java应用:基础与实践》和《大型网站技术架构:核心原理与案例分析》 1、选用的两个角度 高性能:将提交到线程池中的任务直接交给线程去处理(前提:线程数小于最大线程数),不入队 缓冲执行:希望提交到线程池的任务尽量被核心线程(corePoolSize)执行掉 2、高性 阅读全文
posted @ 2016-01-22 12:03 赵计刚 阅读(1225) 评论(0) 推荐(0) 编辑
第十四章 Executors源码解析
摘要:前边两章介绍了基础线程池ThreadPoolExecutor的使用方式、工作机理、参数详细介绍以及核心源码解析。 具体的介绍请参照: 第十二章 ThreadPoolExecutor使用与工作机理 第十三章 ThreadPoolExecutor源码解析 1、Executors与ThreadPoolEx 阅读全文
posted @ 2016-01-21 23:10 赵计刚 阅读(1686) 评论(0) 推荐(0) 编辑
第十三章 ThreadPoolExecutor源码解析
摘要:ThreadPoolExecutor使用方式、工作机理以及参数的详细介绍,请参照《第十二章 ThreadPoolExecutor使用与工作机理》1、源代码主要掌握两个部分线程池的创建:构造器提交任务到线程池去执行:execute()2、构造器2.1、一些属性: /** * runSta... 阅读全文
posted @ 2016-01-21 13:47 赵计刚 阅读(1018) 评论(0) 推荐(0) 编辑
第十二章 ThreadPoolExecutor使用 + 工作机理 + 生命周期
摘要:1、最基础的线程池ThreadPoolExecutor 使用方式: 1 /** 2 * ThreadPoolExecutor测试类 3 * 注意: 4 * 1、ThreadPoolExecutor是一个线程池 5 * 2、多个任务都可以由该线程池中选出几条线程来执行 6 */ 7 public cl 阅读全文
posted @ 2016-01-20 21:19 赵计刚 阅读(3569) 评论(0) 推荐(1) 编辑
第十章 五种并发包总结
摘要:1、常用的五种并发包 ConcurrentHashMap CopyOnWriteArrayList CopyOnWriteArraySet ArrayBlockingQueue LinkedBlockingQueue 2、ConcurrentHashMap 线程安全的HashMap的实现 数据结构: 阅读全文
posted @ 2016-01-19 20:55 赵计刚 阅读(4355) 评论(0) 推荐(0) 编辑
第十一章 AtomicInteger源码解析
摘要:1、原子类 可以实现一些原子操作 基于CAS 下面就以AtomicInteger为例。 2、AtomicInteger 在没有AtomicInteger之前,对于一个Integer的线程安全操作,是需要使用同步锁来实现的,当然现在也可以通过ReentrantLock来实现,但是最好最方便的实现方式是 阅读全文
posted @ 2016-01-18 18:33 赵计刚 阅读(2462) 评论(0) 推荐(1) 编辑
第九章 LinkedBlockingQueue源码解析
摘要:1、对于LinkedBlockingQueue需要掌握以下几点创建入队(添加元素)出队(删除元素)2、创建Node节点内部类与LinkedBlockingQueue的一些属性 static class Node { E item;//节点封装的数据 /** ... 阅读全文
posted @ 2016-01-16 18:10 赵计刚 阅读(5599) 评论(0) 推荐(2) 编辑
第八章 ArrayBlockingQueue源码解析
摘要:注意:在阅读本文之前或在阅读的过程中,需要用到ReentrantLock,内容见《第五章 ReentrantLock源码解析1--获得非公平锁与公平锁lock()》《第六章 ReentrantLock源码解析2--释放锁unlock()》《第七章 ReentrantLock总结》1、对于ArrayB... 阅读全文
posted @ 2016-01-16 14:04 赵计刚 阅读(4919) 评论(0) 推荐(0) 编辑
第七章 ReentrantLock总结
摘要:常用方式: 1、非公平锁获取锁的步骤lock() 基于CAS尝试将state(锁数量)从0设置为1 A、如果设置成功,设置当前线程为独占锁的线程; B、如果设置失败,还会再获取一次锁数量, B1、如果锁数量为0,再基于CAS尝试将state(锁数量)从0设置为1一次,如果设置成功,设置当前线程为独占 阅读全文
posted @ 2016-01-15 21:07 赵计刚 阅读(1692) 评论(0) 推荐(1) 编辑
第六章 ReentrantLock源码解析2--释放锁unlock()
摘要:最常用的方式: int a = 12; //注意:通常情况下,这个会设置成一个类变量,比如说Segement中的段锁与copyOnWriteArrayList中的全局锁 final ReentrantLock lock = new ReentrantLock... 阅读全文
posted @ 2016-01-15 18:46 赵计刚 阅读(2374) 评论(0) 推荐(0) 编辑
第五章 ReentrantLock源码解析1--获得非公平锁与公平锁lock()
摘要:最常用的方式: int a = 12; //注意:通常情况下,这个会设置成一个类变量,比如说Segement中的段锁与copyOnWriteArrayList中的全局锁 final ReentrantLock lock = new ReentrantLock... 阅读全文
posted @ 2016-01-15 14:38 赵计刚 阅读(10251) 评论(6) 推荐(9) 编辑
附2 volatile
摘要:注:在阅读本章之前,先要了解Java内存模型,见上一章《附1 Java内存模型与共享变量可见性》,链接如下: http://www.cnblogs.com/java-zhao/p/5124725.html 1、volatile用法 具体的用法可以参照《第二章 ConcurrentHashMap源码解 阅读全文
posted @ 2016-01-12 21:37 赵计刚 阅读(1304) 评论(0) 推荐(1) 编辑
附1 Java内存模型与共享变量可见性
摘要:注:本文主要参考自《深入理解Java虚拟机(第二版)》和《深入理解Java内存模型》1、Java内存模型(JMM)Java内存模型的主要目标:定义在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。注意:上边的变量指的是共享变量(实例字段、静态字段、数组对象元素),不包括线程私有变量(局部变... 阅读全文
posted @ 2016-01-12 16:17 赵计刚 阅读(2756) 评论(0) 推荐(2) 编辑
第四章 CopyOnWriteArraySet源码解析
摘要:注:在看这篇文章之前,如果对CopyOnWriteArrayList底层不清楚的话,建议先去看看CopyOnWriteArrayList源码解析。http://www.cnblogs.com/java-zhao/p/5121944.html1、对于CopyOnWriteArraySet需要掌握以下几... 阅读全文
posted @ 2016-01-11 20:29 赵计刚 阅读(1472) 评论(0) 推荐(0) 编辑
第三章 CopyOnWriteArrayList源码解析
摘要:注:在看这篇文章之前,如果对ArrayList底层不清楚的话,建议先去看看ArrayList源码解析。http://www.cnblogs.com/java-zhao/p/5102342.html1、对于CopyOnWriteArrayList需要掌握以下几点创建:CopyOnWriteArrayL... 阅读全文
posted @ 2016-01-11 17:24 赵计刚 阅读(4319) 评论(5) 推荐(0) 编辑
第二章 ConcurrentHashMap源码解析
摘要:注:在看这篇文章之前,如果对HashMap的层不清楚的话,建议先去看看HashMap源码解析。 http://www.cnblogs.com/java-zhao/p/5106189.html 1、对于ConcurrentHashMap需要掌握以下几点 Map的创建:ConcurrentHashMap 阅读全文
posted @ 2016-01-08 15:12 赵计刚 阅读(6812) 评论(3) 推荐(0) 编辑
第一章 Java常用的并发类
摘要:注:本系列博客主要参考于《分布式Java应用:基础与实践》,林昊 著1、常用的并发集合类ConcurrentHashMap:线程安全的HashMap的实现CopyOnWriteArrayList:线程安全且在读操作时无锁的ArrayListCopyOnWriteArraySet:基于CopyOnWr... 阅读全文
posted @ 2016-01-08 12:21 赵计刚 阅读(5000) 评论(0) 推荐(0) 编辑