
java
腾腾儿娃
一个菜鸡安卓开发者的成长之路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LinkedList源码分析总结
文章目录LinkedList源码分析总结前言概述源码分析1.成员变量2.构造方法3.增4.删5.改6.查 LinkedList源码分析总结 前言 本文基于JDK8,如有谬误请各位大佬指正。 概述 LinkedList是一个有序集合,底层结构是一个双向链表,它允许元素为null 增删节点只需要修改节点指针,效率很高;而查改都需要遍历链表,效率较低 线程不安全。使用迭代器遍历时如果进行add,remove等增删元素的操作,就会抛出ConcurrentModificationException。 如须原创 2020-06-18 18:18:01 · 444 阅读 · 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 · 525 阅读 · 0 评论 -
ThreadLocal知识点补充
ThreadLocal再总结 前言 之前我的一篇文章Android消息机制——补充完善中大致分析过ThreadLocal,所以这篇文章主要为了补充完善关于它的相关知识。 思考 问:为什么每个线程中要持有一个ThreadLocal.ThreadLocalMap对象而不是ThreadLocal对象? 这个问题的答案,我觉得这篇文章讲的不错:threadlocal为什么这么设计? 文章分析了两种ThreadLocal的设计方案: 方案一:每个线程可以持有多个ThreadLocal对象,这些ThreadLoca原创 2020-06-15 12:42:15 · 221 阅读 · 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 · 175 阅读 · 0 评论 -
Java锁相关知识整理
Java锁相关知识整理 乐观锁、悲观锁 乐观锁与悲观锁是一种广义上的概念 乐观锁:乐观锁认为对同一个数据进行并发操作时,其他线程是不会对它修改的,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据没有被更新,当前线程将自己修改的数据成功写入。如果数据已经被其他线程更新,则根据不同的实现方式执行不同的操作。 悲观锁:悲观锁认为对于同一个数据的并发操作,其他线程一定是对数据进行修改,因此对于同一个数据的并发操作,悲观锁会对它先进行加锁,确保数据不会被其他线程修改。例如sy原创 2020-05-28 16:12:35 · 255 阅读 · 0 评论 -
多线程知识总结
多线程 一.线程概述 并发和并行: 并行指同一时刻有多条指令在多个处理器上同时执行 并发指同一时刻只能有一条指令执行,但多个进程指令快速轮换执行,在宏观上有多个进程同时执行的效果(子弹光速上膛) 二.线程的创建和启动 1.继承Thread 子类继承Thread类并重写run()方法,创建Thread子类对象,调用线程对象的start方法即可启动线程。run方法内即线程需要完成的任务。 2.实现R...原创 2019-08-03 17:21:36 · 131 阅读 · 0 评论