- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 Java锁机制
悲观锁和乐观锁 乐观锁和悲观锁都是一种广义上的概念。 对于同一个数据的并发操作,悲观锁确实很悲观,它时时刻刻都非常担心自己在读取或者写入数据的时候有其他线程来修改数据,所以为了安心,他一般就直接从读取数据的时候就加锁,确保自己操作的时候不会被其它线程打扰。最典型的悲观锁就是synchronized和Lock。 而乐观锁确实很乐观,它认为自己在操作数据的时候是不会有其他线程来修改数据的,所以丝毫不担...
2019-11-28 22:34:51 439
原创 深入理解JVM-类加载器
1. 概念 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流(即字节码)”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 一般来说,Java 虚拟机使用 Java 类的方式如下: Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成字节码(.class 文件)。 ...
2019-11-24 21:58:01 140
原创 深入理解JVM-虚拟机类加载机制
1. 概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 Java类型的加载、连接和初始化过程都是在程序运行期间完成的,为Java应用程序提供高度的灵活性 2. 类加载的时机 类从被加载到虚拟机内存中开始,到卸载处内存为止 它的整个生命周期包括: 加载(Loading) 验证 (Veri...
2019-11-24 15:44:28 149
原创 Java集合源码之HashMap
1. 简介 HashMap是一个哈希表,线程不安全,key唯一,value可重复,允许key和value为null。遍历时是无序的。 底层结构是基于链表散列,也就是数组+链表。数组也被称为哈希桶,桶里面就装着链表,链表中的每个节点,就是哈希表中的每个元素。 在JDK8中,当链表长度达到8的时候,就会转为红黑树。 它实现了Map<K, V>, Cloneable, Serializabl...
2019-11-22 20:10:31 169
原创 Java集合源码之ArrayList
1. 简介 ArrayList可以说是我们最常用的一种集合了。 他的本质是一个数组,一个可以自动扩容的动态数组,线程不安全,允许元素为null。 由于数组的内存连续,可以根据下标以O(1)的时间读写元素,因此时间效率很高。 2. 内部属性 我们先来看下ArrayList里面有哪几个属性: private static final long serialVersionUID = 86834525...
2019-11-18 22:10:52 167
原创 Android消息机制之Handler 详解
简介 作为一个Android开发者,Handler的大名你一定听过。做Android开发肯定离不开Handler,它通常被我们用来连通主线程和子线程。 可以说只要有异步的地方一定有Handler。 那么,你了解过为什么Handler能连通主线程和子线程吗,也就是说,你了解过Handler背后的原理吗? 就让本文带你了解。 Handler的基本用法 按照惯例,我们首先看下Handler的一般用法: ...
2019-11-17 14:40:51 318 1
原创 Android消息机制之ThreadLocal
简介 ThreadLocal是一个线程内部的数据储存类,通过他可以在指定的线程中存储数据。数据存储以后,只有在指定的线程中可以获取到存储的数据,对于其他线程来说则无法获取。 在源码中是这样写的: This class provides thread-local variables. These variables differ from their normal counterparts in...
2019-11-08 23:00:19 372
Android计算器 源码
2018-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人