因为本人水平与表达能力有限,有错误的地方欢迎交流与指正. 1 简单介绍 可重入读写锁时基于AQS实现的,典型的用法如JDK1.7中的演示样例: class RWDictionary { private final Map<String, Data> m = new TreeMap<String, Data>(); private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); private fina…
相比1.6,1.7有些变化: 1.        添加了一个TIDYING状态.这个状态是介于STOP和TERMINATED之间的.假设运行完terminated钩子函数后状态就变成TERMINATED了: 2.        内部类Worker继承了AQS类作为一个独享锁,在执行每一个任务前会获取自己的锁. 3.        runState和poolSize两个字段被合并成一个原子字段ctl了,不再使用mainLock保护了. 一.成员变量介绍 public class ThreadPoo…
Java Arrays.sort源代码解析 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类型:采用改进的归并排序. 一.对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序.对这一区别,sun在<<The Java Tutorial>>中做出的解释如下: The so…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:[张鸿洋的博客] 上一篇带大家初步了解了EventBus的使用方式,详见:Android EventBus实战 没听过你就out了,本篇博客将解析EventBus的源代码,相信能够让大家深入理解该框架的实现.也能解决非常多在使用中的疑问:为什么能够这么做?为什么这么做不好呢? 1.概述 一般使用EventBus的组件类,相似以下这样的方式: public…
天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Java 常见集合 高并发编程(JUC 包) JVM 内存管理 Java 8 知识点 网络协议相关 数据库相关 MVC 框架相关 大数据相关 Linux 命令相关 面试,是大家从学校走向社会的第一步. 互联网公司的校园招聘,从形式上说,面试一般分为 2-3 轮技术面试…
JAVA方法调用中的解析与分派 本文算是<深入理解JVM>的读书笔记,参考书中的相关代码示例,从字节码指令角度看看解析与分派的区别. 方法调用,其实就是要回答一个问题:JVM在执行一个方法的时候,它是如何找到这个方法的? 找一个方法,就需要知道 所谓的 地址.这个地址,从不同的层次看,对它的称呼也不同.从编译器javac的角度看,我称之为符号引用:从jvm虚拟机角度看,称之为直接引用.或者说从class字节码角度看,将这个地址称之为符号引用:当将class字节码加载到内存(方法区)中后,称之为…
1. Concurrent相关历史 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器(bins)时,吞吐量严重降低.因此Java5.0开始针对多线程并发访问设计,提供了并发性能较好的并发容器,引入了Java.util.concurrent包,在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点挺符…
转载请标明出处:一片枫叶的专栏 首先说点题外话,对于想学android framework源代码的同学,事实上能够在github中fork一份,详细地址:platform_frameworks_base 这里面基本都是android framework层的源代码了.并且近期发现了一个比較不错的github插件:OctoTree,它 是一个浏览器插件,它能够让你在Github 看代码时,左边栏会出现一个树状结构.就像我们在IDE 一样.当我们看一个项目的结构,或者想看详细的某个文件,这样就会非常方…
struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form-data的请求,它须要调用其它请求解析器,将HTTP请求中的表单域解析出来. 但Struts2在原有的上传解析器基础 上做了进一步封装,更进一步简化了文件上传. Struts2默认使用的是Jakarta的Common-FileUpload框架来上传文件,因此,要在web应用中添加两个Jar文件:c…
Launcher系列目录: 一.android7.x Launcher3源代码解析(1)-启动流程 二.android7.x Launcher3源代码解析(2)-框架结构 三.android7.x Launcher3源代码解析(3)-workspace和allapps载入流程 前两篇博客分别对Lancher的启动和Launcher的框架结构进行了一些分析.这一篇.将着重開始分析界面的载入流程. 1.总体流程 先上一张总体的流程图吧.(图片看不清能够下载下来看或者右击新开个页面查看图片) wate…