3 Sun_Jingjing

尚未进行身份认证

暂无相关简介

等级
TA的排名 20w+

CountDownLatch源码浅析

目录成员变量构造方法线程等待countDown方法getCount方法CountDownLatch允许一个或多个线程等待其他线程完成操作,基于对共享锁的获取来实现,获取到共享锁,说明线程不再需要等待,未获取到,说明线程仍然需要等待。成员变量 private final Sync sync; // 用来实现功能的基础组件,继承AQS,Sync是CountDow...

2018-10-26 12:29:07

CyclicBarrier源码浅析

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

2018-10-23 18:29:39

Retrofit源码浅析

目录创建Retrofit创建代理类创建ServiceMethod解析注解创建CallAdapter创建Converter创建Call请求创建OkHttpCall对象ServiceMethod的adapt方法执行网络请求构建网络请求解析响应创建RetrofitRetrofit.Builder有以下几个成员变量,通过链式可以设置Builder的成...

2018-10-15 22:05:56

otto 源码浅析

目录otto简单使用说明Bus的构造方法Bus的register方法findAllProducersdispatchProducerResultToHandlerfindAllSubscribersBus的post方法Bus的unregister方法otto简单使用说明单例创建Bus类register用于注册,unregister用于取消注册post...

2018-10-11 20:39:40

PriorityBlockingQueue简述

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

2018-10-04 17:13:05

LinkedBlockingQueue源码浅析

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

2018-10-04 17:12:30

ArrayBlockingQueue源码浅析

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

2018-10-04 17:07:36

Hashtable源码浅析

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

2018-10-04 12:21:41

PriorityQueue源码浅析

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

2018-10-04 12:17:27

LinkedList源码浅析

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

2018-10-04 12:09:58

Vector与Stack简述

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

2018-10-04 11:54:04

ArrayList源码浅析

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

2018-10-04 11:49:50

java.net.UnknownHostException异常

http://www.cnblogs.com/rockdean/articles/2439030.html太诡异了,这个诡异的问题让我不幸的碰到又不幸浪费了很多时间去找问题。nnd第一种: java.net.UnknownHostException: Host is unresolved ***.****.*** 80你若是确定你的网络权限在配置文件中写好,也确定自己的网络是好

2017-08-19 13:27:12

使用Gson解析报错

在使用Gson时解析报错:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT大意为解析时期待的是一个JSONArray,而实际是一个JSONObject,说明服务器端给的json数据实质是一个JSONObject

2017-08-19 01:20:34

chrome jsonView插件安装

http://www.cnblogs.com/cssfirefly/p/4368020.htmlchrome 应用商店打不开,想装插件愁死人了。今天想到一个好方法,以 jsonView插件为例分享一下。1、打开 https://github.com ;2、搜索 jsonView 链接:https://github.com/search?utf8=%E2%9C%9

2017-08-17 20:55:25

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

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

2017-07-23 13:17:51

Dialog的不完全事件分发机制

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

2017-07-17 23:11:12

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

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

2017-07-16 12:23:40

UriMatcher使用原理的源码分析

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

2017-07-09 13:44:05

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

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

2017-07-08 18:27:11

查看更多

勋章 我的勋章
    暂无奖章