【java源码分析-基本类型和包装类】教程文章相关的互联网学习教程文章

Java基础try-with-resource语法源码分析【代码】

众所周知,所有被打开的系统资源,比如流、文件或者Socket连接等,都需要被开发者手动关闭,否则随着程序的不断运行,资源泄露将会累积成重大的生产事故。 在Java的江湖中,存在着一种名为finally的功夫,它可以保证当你习武走火入魔之时,还可以做一些自救的操作。在远古时代,处理资源关闭的代码通常写在finally块中。然而,如果你同时打开了多个资源,那么将会出现噩梦般的场景:public class Demo {public static void main(St...

Java 线程池之 ThreadPoolExecutor 源码分析【图】

Java 线程池源码分析(基于JDK1.8): ThreadPoolExecutor 是Java最常用的线程池,今天来分享下源码分析,以下是ThreadPoolExecutor具体类继承关系,以及方法详情我们看到ExecutorService接口,提供了submit(Runnable)、submit(Runnable,T)、submit(Callable<T>)三个接口方法,以供调用,具体实现在AbstractExecutorService中,ThreadPoolExecutor并没有对其进一步封装,那么我们以提交一个Runable接口实例入手,看下如何进行submit的...

Java异步编程——深入源码分析FutureTask【代码】【图】

Java的异步编程是一项非常常用的多线程技术。 之前通过源码详细分析了ThreadPoolExecutor《你真的懂ThreadPoolExecutor线程池技术吗?看了源码你会有全新的认识》。通过创建一个ThreadPoolExecutor,往里面丢任务就可以实现多线程异步执行了。 但之前的任务主要倾向于线程池,并没有讲到异步编程方面的内容。本文将通过介绍Executor+Future框架(FutureTask是实现的核心),来深入了解下Java的异步编程。 万事从示例开始,我们先通...

Java 读写锁 ReentrantReadWriteLock 源码分析【代码】【图】

原文出处:https://javadoop.com/post/reentrant-read-write-lock本文内容:读写锁 ReentrantReadWriteLock 的源码分析,基于 Java7/Java8。阅读建议:虽然我这里会介绍一些 AQS 的知识,不过如果你完全不了解 AQS,看本文就有点吃力了。使用示例下面这个例子非常实用,我是 javadoc 的搬运工:// 这是一个关于缓存操作的故事 class CachedData { Object data; volatile boolean cacheValid; // 读写锁实例 final ...

【Java】HashMap源码分析——基本概念【代码】【图】

在JDK1.8后,对HashMap源码进行了更改,引入了红黑树。在这之前,HashMap实际上就是就是数组+链表的结构,由于HashMap是一张哈希表,其会产生哈希冲突,为了解决哈希冲突,HashMap采用了开链法,即对于用对象hashCode值计算哈希表数组下表时,当出现相同情况时,会在相同的地方追加形成链表的形式。对于分布均匀的情况下,仅仅是一个一维数组,查询时时间复杂度为O(1),当分布不均匀的时候,在有的地方会形成链表,极端情况下完全退...

深入源码分析 Java 线程池的实现原理【图】

程序的运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。网上有不少介绍如何使用线程池的文章,那我想说点什么呢?我希望通过学习线程池原理,明白所有 池化技术 的基本设计思路。遇到其他相似问题可以解决。池化技术前面提到一个名词——池化技术,那么到底什么是池化技术呢?池化技术简单点来说,就是提前保...

深入源码分析 Java 线程池的实现原理【代码】【图】

程序的运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。 网上有不少介绍如何使用线程池的文章,那我想说点什么呢?我希望通过学习线程池原理,明白所有 池化技术 的基本设计思路。遇到其他相似问题可以解决。 池化技术 前面提到一个名词——池化技术,那么到底什么是池化技术呢? 池化技术简单点来说,就是提...

深入源码分析Java线程池的实现原理【图】

程序的运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。网上有不少介绍如何使用线程池的文章,那我想说点什么呢?我希望通过学习线程池原理,明白所有池化技术的基本设计思路。遇到其他相似问题可以解决。池化技术前面提到一个名词——池化技术,那么到底什么是池化技术呢?池化技术简单点来说,就是提前保存...

RxJava源码分析(二):常用操作符【代码】

一、map操作符 map操作符的作用是将被观察者Observable发送的数据在apply()方法中转化成自己需要的返回到下游Observer的onNext()方法中。例: Observable.create(new ObservableOnSubscribe<Integer>() {@Overridepublic void subscribe(ObservableEmitter<Integer> emitter) throws Exception {emitter.onNext(1);emitter.onNext(2);emitter.onNext(3);emitter.onNext(4);emitter.onComplete();}}).map(new Function<Integer, Str...

Java 集合 | LinkedHashMap源码分析(JDK 1.7)【代码】【图】

一、基本图示二、基本介绍 public class LinkedHashMap<K,V>extends HashMap<K,V>implements Map<K,V>结构LinkedHashMap 继承了 HashMap LinkedHashMap 实现了 Map 接口特性底层使用拉链法处理冲突的散列表 元素是有序的,即遍历得到的元素顺序和放进去的元素属性一样 是线程不安全的 key 和 value 都允许为 null 1 个 key 只能对应 1 个 value,1 个 value 对应多个 key三、基本结构 // 指向双向链表的头节点 transient LinkedHas...

JAVA常用集合源码分析:HashSet【图】

序言 在上一篇文章中,我们介绍了HashMap,其实本来想自己完成源码分析的一系列文章的,但是HashMap的源码着实是复杂,看的我脑壳疼。。于是就自己去找了找大牛们的文章反复看,后面总算有了点门道了,大致知道了HashMap的原理,然后转载了一篇我认为总结的比较好的文章到我的博客里,供大家一起学习。初步了解HashMap的源码后,自以为自己还OK了,于是便打算独立把ConcurrentHashMap的源码也一并分析完,然后写下来,可是一看代码...

Java NIO学习笔记:结合源码分析+Reactor模式【图】

Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器 面向流与面向缓冲 Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在...

RxJava2 源码分析【代码】

前言 很多项目使用流行的Rxjava2 + Retrofit搭建网络框架,Rxjava现在已经发展到Rxjava2,之前一直都只是再用Rxjava,但从来没有了解下Rxjava的内部实现,接下来一步步来分析Rxjava2的源码,Rxjava2分Observable和Flowable两种(无被压和有被压),我们今天先从简单的无背压的observable来分析。源码基于rxjava:2.1.1。 简单的例子 先来段最简单的代码,直观的了解下整个Rxjava运行的完整流程。 1 private void doSomeWork() {2 ...