
java
luoluofeixia
这个作者很懒,什么都没留下…
展开
-
源码阅读系列——进阶篇(Android的线程分析)你是否真的了解线程
1、线程概念我们知道,在linux系统里,有进程和线程的概念。进程是linux最小的资源管理单位,而线程时最小的执行单元。进程与线程不一样,他拥有自己独立的内存空间,而线程则是共享进程的内存空间。所以,相对而言,会更好的利用资源。当然,学习过linux内核的人,也知道,不管是线程还是进程,在内核中都理解为进程,因为linux内核本身在cpu调度的时候,进程为最小单元,所以线程在内核中表现为一个轻量化的进程,而至于用户态下线程的管理,则是通过进程首次建立就自动创建的管理线程进行管理,例如线程的停止,线程的原创 2020-09-06 20:55:14 · 429 阅读 · 0 评论 -
详细解读Android Handler机制
1、你是否真的了解Handler机制很多同学如果只看过博客的解析,可能没有完全了解到整个Handler机制中的实现,我们了解Handler不能浮于表面,在面试的过程中,发现很多同学并没有从根本上了解这一机制,此篇文章我们去好好捋一捋,重新认识一下他的实现。2、Looper我们写过JAVA知道,他总是由一个 public static void main(String[] args)方法开始的,同样我们通过zygote fork的进程也是由此法开始。按照进程的规则,会伴随一个主线程的创建,而我们在mai原创 2020-07-24 20:18:30 · 200 阅读 · 0 评论 -
源码阅读系列——基础篇(ConcurrentHashMap 集合源码分析)
上篇我们讲到HashMap,从整个代码的实现上,我们看到没有任何一个关于synchronized或者Lock的字眼,所以HashMap是线程不安全的,Java提供了一个线程安全的HashMap,当然也可以通过Collections.synchronizedMap来实现Map线程安全,与List里面提到的方式一样,也是很暴力的直接给每个读取方法加一个synchronized字段,这里不再赘述。我们讲一下Java的线程安全利器ConcurrentHashMap1、类定义public class Concur原创 2020-06-17 16:39:55 · 172 阅读 · 0 评论 -
源码阅读系列——基础篇(HashMap 集合源码分析)
HashMap是一种插入、查询效率都较高的集合,我们看一下他是如何实现的。首先我们以插入数据来看一下源码:1、插入数据// 获取对象的hash值,至于什么hashcode,见注1static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}public V put(K key, V value) { retur原创 2020-05-29 17:34:28 · 182 阅读 · 0 评论 -
源码阅读系列——基础篇(CopyOnWriteArrayList 集合源码分析)
CopyOnWriteArrayList是一个线程安全的List,使用较少,我们看一下他的实现。1、类定义public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { final transient Object lock = new Object(); // 对象锁 private transient vol原创 2020-05-22 17:58:26 · 120 阅读 · 0 评论 -
源码阅读系列——基础篇(LinkedList 集合源码分析)
LinkedList与ArrayList同样都是线程不安全的集合,那么他跟ArrayList有何区别。我们还是从源码来看1、类定义public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0; // 元原创 2020-05-22 15:03:00 · 147 阅读 · 0 评论 -
源码阅读系列——基础篇(ArrayList 集合源码分析)
ArrayList是我们非常常用的一个线程不安全的List集合。ArrayList和Vector大体比较相似。我们继续阅读源码找答案。1、类定义public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final int DEFAULT_C原创 2020-05-22 12:06:17 · 188 阅读 · 0 评论 -
源码阅读系列——基础篇(Vector 集合源码分析)
我们知道Java有一个不常用的集合类Vector。因为他使用一种非常暴力的方式实现线程安全。我们看一下他的基本实现1、类定义public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ protected Object[] elementData; // 元素数组 pro原创 2020-05-22 11:13:16 · 172 阅读 · 0 评论 -
后序遍历非递归的自我理解
我们看一下递归的方法,来反推非递归的方法1、递归方法二叉树节点class TreeNode { TreeNode left; TreeNode right; int val;}递归方法class Solution { List<Integer> list = new ArrayList<Integer>(); public List<Integer> postorderTraversal(TreeNode root) {原创 2020-05-21 18:26:59 · 272 阅读 · 0 评论