
java
腾腾儿娃
一个菜鸡安卓开发者的成长之路
展开
-
LinkedList源码分析总结
文章目录LinkedList源码分析总结前言概述源码分析1.成员变量2.构造方法3.增4.删5.改6.查LinkedList源码分析总结前言本文基于JDK8,如有谬误请各位大佬指正。概述LinkedList是一个有序集合,底层结构是一个双向链表,它允许元素为null增删节点只需要修改节点指针,效率很高;而查改都需要遍历链表,效率较低线程不安全。使用迭代器遍历时如果进行add,remove等增删元素的操作,就会抛出ConcurrentModificationException。如须原创 2020-06-18 18:18:01 · 415 阅读 · 0 评论 -
ArrayList源码分析总结
文章目录ArrayList源码分析总结前言概述源码分析1.成员变量2.构造方法3.增4.删5.改6.查7.迭代器ArrayList源码分析总结前言本文基于JDK8分析总结,如有谬误还请各位大佬指正。概述ArrayList即可变长数组,它底层结构为数组,内存空间连续,随机访问效率很高。扩容通过Arrays.copyOf方法实现,这个方法通过System.arraycopy这个native方法实现数组扩容。一般情况下,每次扩容至原数组的1.5倍大小。它允许元素为null,存储元素时按顺序在数组中原创 2020-06-17 21:38:58 · 500 阅读 · 0 评论 -
ThreadLocal知识点补充
ThreadLocal再总结前言之前我的一篇文章Android消息机制——补充完善中大致分析过ThreadLocal,所以这篇文章主要为了补充完善关于它的相关知识。思考问:为什么每个线程中要持有一个ThreadLocal.ThreadLocalMap对象而不是ThreadLocal对象?这个问题的答案,我觉得这篇文章讲的不错:threadlocal为什么这么设计?文章分析了两种ThreadLocal的设计方案:方案一:每个线程可以持有多个ThreadLocal对象,这些ThreadLoca原创 2020-06-15 12:42:15 · 212 阅读 · 0 评论 -
HashMap源码整理回顾
文章目录HashMap源码整理概念基本数据结构构造方法put()get()remove()HashMap源码整理本文基于JDK8分析HashMap源码概念根据键值对来访问存储记录的一种数据结构。基本数据结构JDK7及以前是数组+链表,JDK8开始使用数组+链表+红黑树从它的基本数据结构就可以看出,它处理哈希冲突的方法是链地址法。一些成员变量public class HashMap<K,V> extends AbstractMap<K,V> implement原创 2020-06-14 23:12:22 · 155 阅读 · 0 评论 -
Java锁相关知识整理
Java锁相关知识整理乐观锁、悲观锁乐观锁与悲观锁是一种广义上的概念乐观锁:乐观锁认为对同一个数据进行并发操作时,其他线程是不会对它修改的,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据没有被更新,当前线程将自己修改的数据成功写入。如果数据已经被其他线程更新,则根据不同的实现方式执行不同的操作。悲观锁:悲观锁认为对于同一个数据的并发操作,其他线程一定是对数据进行修改,因此对于同一个数据的并发操作,悲观锁会对它先进行加锁,确保数据不会被其他线程修改。例如sy原创 2020-05-28 16:12:35 · 239 阅读 · 0 评论 -
多线程知识总结
多线程一.线程概述并发和并行:并行指同一时刻有多条指令在多个处理器上同时执行并发指同一时刻只能有一条指令执行,但多个进程指令快速轮换执行,在宏观上有多个进程同时执行的效果(子弹光速上膛)二.线程的创建和启动1.继承Thread子类继承Thread类并重写run()方法,创建Thread子类对象,调用线程对象的start方法即可启动线程。run方法内即线程需要完成的任务。2.实现R...原创 2019-08-03 17:21:36 · 115 阅读 · 0 评论