文章 2022-05-10 来自:开发者社区

Java并发系列之三 ReadWriteLock源码解析

1. ReadWriteLock接口ReadWriteLock是一个java接口,它并没有继承Lock接口。提供了readLock()和writeLock(),分别返回一个读锁和写锁。public interface ReadWriteLock { Lock readLock(); Lock writeLock(); }2. ReentrantReadWriteLock使用Ree...

文章 2022-02-17 来自:开发者社区

Java8的TreeMap源码解析

线程不安全,但是因为需要排序,进行key的compareTo方法,所以key是不能null中,value是可以的。首先庖丁解牛,类似于如何把大象装入冰箱,分三步走:以排序二叉树的方式新增节点因为红黑树首先本身就是一个排序二叉树标记它为红色如果设为黑色,就会导致根到叶的路径上有一条路上,多一个额外的黑节点,打破性质 5,这个很难调整但设为红色节点后,可能会导致出现两个连续红色节点的冲突,那么可以通....

Java8的TreeMap源码解析
文章 2022-02-17 来自:开发者社区

Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(下)

DuplicateFrameEliminator消除了导致ASM创建无效类文件的连续 stackmap frames 定义。 当原始类文件在意外偏移处包含其他 stackmap frames 时,就会发生这种情况,某些使用ECJ编译的类文件就是这种情况。ProbeInserter - 探针植入类内部实用程序,用于将探针添加到方法的控制流中。探针的代码只是将布尔数组的某个插槽设置为true。另外,....

Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(下)
文章 2022-02-17 来自:开发者社区

Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(上)

对类的植入锁定进行判断几个可以对覆盖率跟踪的Java类定义进行instrument的APIpublic byte[] instrument(final ClassReader reader) { final ClassWriter writer = new ClassWriter(reader, 0) { @Override protected String ge...

Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析(上)
文章 2022-02-17 来自:开发者社区

Java对象的序列化/反序列化原理及源码解析(下)

Other1. static和transient字段不能被序列化。序列化的时候所有的数据都是来自于ObejctStreamClass对象,在生成ObjectStreamClass的构造函数中会调用fields = getSerialFields(cl);这句代码来获取需要被序列化的字段,getSerialFields()方法实际上是调用getDefaultSerialFields()方法的,ge....

文章 2022-02-17 来自:开发者社区

Java对象的序列化/反序列化原理及源码解析(中)

writeNonProxy()方法中会按照以下几个过程来写入数据:调用writeUTF()方法写入对象所属类的名字,对于本例中name = com.sss.test.对于writeUTF()这个方法,在写入实际的数据之前会先写入name的字节数,代码如下:void writeUTF(String s, long utflen) throws IOException { if (u...

Java对象的序列化/反序列化原理及源码解析(中)
文章 2022-02-17 来自:开发者社区

Java对象的序列化/反序列化原理及源码解析(上)

https://github.com/Wasabi1234/Java-Interview-Tutorial1 什么是序列化、反序列化Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程。2 为什么需要序列化?2.1 使用场景2.1.1 持久化对象JVM允许我们在内存中创建可复用的Java对象,但一般只有当JVM处于运行时,这些对象才....

Java对象的序列化/反序列化原理及源码解析(上)
文章 2022-02-17 来自:开发者社区

Java 集合源码解析 - ConcurrentHashMap(JDK7)(下)

5 ConcurrentHashMap的操作主要研究ConcurrentHashMap的3种操作——get操作、put操作和size操作.5.1 get操作Segment的get操作实现非常简单和高效.先经过一次再散列然后使用该散列值通过散列运算定位到Segment最后通过散列算法定位到该元素.public V get(Object key) { Segment<K,V> s...

Java 集合源码解析 - ConcurrentHashMap(JDK7)(下)
文章 2022-02-17 来自:开发者社区

Java 集合源码解析 - ConcurrentHashMap(JDK7)(上)

ConcurrentHashMap是线程安全且高效的HashMap1 为什么要使用ConcurrentHashMap线程不安全的HashMapHashMap是Java中最常用的一个Map类,性能好、速度快,但不能保证线程安全,它可用null作为key/valueHashMap的线程不安全主要体现在resize时的死循环及使用迭代器时的fast-fail在多线程环境下,使用HashMap进行put....

Java 集合源码解析 - ConcurrentHashMap(JDK7)(上)
文章 2022-02-17 来自:开发者社区

Java线程池架构(一)原理和源码解析

在前面介绍JUC的文章中,提到了关于线程池Execotors的创建介绍,在文章:《java之JUC系列-外部Tools》中第一部分有详细的说明,请参阅;文章中其实说明了外部的使用方式,但是没有说内部是如何实现的,为了加深对实现的理解,在使用中可以放心,我们这里将做源码解析以及反馈到原理上,Executors工具可以创建普通的线程池以及schedule调度任务的调度池,其实两者实现上还是有一些区别....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Java开发者

Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~

+关注