Jing

加油,永远不要觉得别人望尘莫及,要做的,只是每天进步一点点!

CountDownLatch源码浅析

目录 成员变量 构造方法 线程等待 countDown方法 getCount方法 CountDownLatch允许一个或多个线程等待其他线程完成操作,基于对共享锁的获取来实现,获取到共享锁,说明线程不再需要等待,未获取到,说明线程仍然需要等待。 成员变量 private ...

2018-10-26 12:29:07

阅读数 27

评论数 0

CyclicBarrier源码浅析

目录 简述 成员变量 等待解除阻塞 重置 获取当前阻塞的线程个数 简述 阻塞多个线程,直到阻塞的线程个数达到一定条件,则唤醒所有阻塞的线程,并由唤醒的线程执行任务。   成员变量 // 用于线程安全的锁 private final ReentrantLock ...

2018-10-23 18:29:39

阅读数 24

评论数 0

Retrofit源码浅析

目录 创建Retrofit 创建代理类 创建ServiceMethod 解析注解 创建CallAdapter 创建Converter 创建Call请求 创建OkHttpCall对象 ServiceMethod的adapt方法 执行网络请求 构建网络请求 解析响应 创建Re...

2018-10-15 22:05:56

阅读数 35

评论数 0

otto 源码浅析

目录 otto简单使用说明 Bus的构造方法 Bus的register方法 findAllProducers dispatchProducerResultToHandler findAllSubscribers Bus的post方法 Bus的unregister方法 otto简单...

2018-10-11 20:39:40

阅读数 40

评论数 0

PriorityBlockingQueue简述

一个支持优先级排序的无界阻塞队列   PriorityBlockingQueue可以理解成是对PriorityQueue加上了Lock功能,所以不再分析具体源码。

2018-10-04 17:13:05

阅读数 72

评论数 0

LinkedBlockingQueue源码浅析

一个由链表结构组成的有界阻塞队列   成员变量 // 允许的最大容量 private final int capacity; // 当前节点个数,因为有两个锁,所以节点个数采用原子类 private final AtomicInteger count = ...

2018-10-04 17:12:30

阅读数 32

评论数 0

ArrayBlockingQueue源码浅析

一个由数组结构组成的有界阻塞队列   构造方法 public ArrayBlockingQueue(int capacity) { this(capacity, false); } // 初始化数组,实例化ReentrantLock和两个等待队列n...

2018-10-04 17:07:36

阅读数 62

评论数 0

Hashtable源码浅析

Hashtable是并发安全的hash表,结构是数组+链表。   put // 添加 key value public synchronized V put(K key, V value) { // Make sure the value is not nu...

2018-10-04 12:21:41

阅读数 72

评论数 0

PriorityQueue源码浅析

优先级队列,基于数组的树形结构。   添加元素 // 添加元素 public boolean add(E e) { return offer(e); } // 添加元素 public boolean offer(E e) { ...

2018-10-04 12:17:27

阅读数 22

评论数 0

LinkedList源码浅析

节点Node:静态内部类 // 节点类,有值、前驱、后继 private static class Node<E> { E item; Node<E> nex...

2018-10-04 12:09:58

阅读数 23

评论数 0

Vector与Stack简述

  Vector: 线程安全,默认容量为10,容量增长量默认为0,每次进行扩容是旧的容量乘以2。支持null的添加。基于数组实现。   Stack: Stack继承Vector的栈结构。...

2018-10-04 11:54:04

阅读数 83

评论数 0

ArrayList源码浅析

  动态数组的列表   添加元素 // 增加一个元素 public boolean add(E e) { // 确保数组容量足够 ensureCapacityInternal(size + 1); // Increments modCount!! /...

2018-10-04 11:49:50

阅读数 33

评论数 0

java.net.UnknownHostException异常

http://www.cnblogs.com/rockdean/articles/2439030.html 太诡异了,这个诡异的问题让我不幸的碰到又不幸浪费了很多时间去找问题。nnd 第一种: java.net.UnknownHostException: Host is unresol...

2017-08-19 13:27:12

阅读数 3741

评论数 0

使用Gson解析报错

在使用Gson时解析报错: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT 大意为解析时期待的是一个JSONA...

2017-08-19 01:20:34

阅读数 227

评论数 0

chrome jsonView插件安装

http://www.cnblogs.com/cssfirefly/p/4368020.html chrome 应用商店打不开,想装插件愁死人了。 今天想到一个好方法,以 jsonView插件为例分享一下。 1、打开 https://github.com ; 2、搜索 ...

2017-08-17 20:55:25

阅读数 142

评论数 0

【Android 数据业务解析】nwTypeChanged引发的原因

本文主要分析由于nwTypeChanged引发的数据连接流程。 在DcTracker的handleMessage方法中,会由于nwTypeChanged原因来使得手机去尝试建立数据连接,调用setupDataOnConnectableApns方法。 // 当DcTracker接收到EV...

2017-07-23 13:17:51

阅读数 366

评论数 0

Dialog的不完全事件分发机制

说是不完全,一是觉得自己语言表述不完美,二是觉得没有方方面面都分析到。         首先我们知道以下知识:         setCancelable(false); dialog弹出后会点击屏幕或物理返回键,dialog不消失         setCanceledOnTouchOu...

2017-07-17 23:11:12

阅读数 453

评论数 0

【Android 数据业务解析】PreferredApn修改的源码分析

DcTracker中需要去获取preferredapn的id以及修改preferredapn的id,涉及到两个方法的使用,如下: getPreferredApn方法 // 得到preferredapn的方法 private ApnSetting getPreferredApn() { ...

2017-07-16 12:23:40

阅读数 949

评论数 0

UriMatcher使用原理的源码分析

1 构造方法分析 首先构造一个UriMatcher对象A,构造方法如下: public static final int NO_MATCH = -1; /** * Creates the root node of the URI tree. * * @param code the co...

2017-07-09 13:44:05

阅读数 221

评论数 0

【Android 数据业务解析】APN参数创建

手机可以上网,首先要建立数据连接,建立数据连接之前需要有apn才可以,所以本节先研究APN参数的创建过程。 在DcTracker.java中,创建APN的起点方法为createAllApnList方法。 DcTracker的createAllApnList方法: /** * Based ...

2017-07-08 18:27:11

阅读数 1015

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭