深入理解Java
文章平均质量分 50
本专栏将写一写JDK的故事
itlemon2021
年华易逝,且行且珍惜!
展开
-
深入理解类加载机制:拨开迷雾见真章
Java语言将封装性表现的淋漓尽致,程序员在写Java代码的时候根本不用考虑自己写的代码在后期运行时是如何被JVM加载到内存中的,但是想告别CRUD,进阶为一名高级程序员的话,JVM的类加载机制必须了然于心,本文将详解JVM的类加载机制,文中涉及的代码均为JDK8版本,所涉及的Java虚拟机均指HotSpot。一、理解类加载机制我们平常写的Java代码是存储在.java文件中,这是一个文本文件,是不能直接执行的,但是这个文本文件可以被编译成为一个字节码文件(后缀为.class),这个字节码文件中描..原创 2020-08-31 20:19:30 · 579 阅读 · 1 评论 -
走进高并发(四)深入理解Atomic类
从本篇文章开始,我们将对JDK并发包java.util.concurrent中相关类的源码进行分析,通过分析源码,能让我们尽快地掌握并发包中提供的并发手脚架,能让我们更好地利用这些并发工具写出更加好的代码。本篇文章的主角是AtomicInteger,接下来,请跟随文章的节奏一起分析AtomicInteger吧!...原创 2020-07-04 11:12:12 · 3148 阅读 · 0 评论 -
走进高并发(三)深入理解Java内存模型
多线程程序要比单线程程序复杂的多,单线程程序中,线程从内存中读取一个变量,如果这个变量的值本身就是1,那么线程读取到的值必然是1。但是在多线程程序中,如果多线程对变量的读写没有进行合理的控制,那么后续线程读取到的变量的值很可能是2,甚至是3等。所以有必要定义一种或多种规则,保证多线程下内存数据的一致性和准确性,Java内存模型(Java Memory Model,JMM)由此诞生。在讨论Java内存模型之前,这里先一起聊聊CPU、高速缓存以及主内存,在了解这些知识后,对理解Java内存模型会有很大的帮.原创 2020-06-22 20:04:00 · 582 阅读 · 0 评论 -
深入理解ThreadLocal:拨开迷雾,探究本质
ThreadLocal是JDK1.2提供的一个工具,它为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,解决共享参数的频繁传递与线程安全等问题。如果开发者掌握了ThreadLocal用法与原理,那么使用起来将得心应手,那么请跟随本文的节奏,拨开迷雾,探究本质吧!本文将带领读者深入理解ThreadLocal,为了保证阅读质量,我们可以先一起来简单理...原创 2020-03-31 00:32:20 · 1830 阅读 · 1 评论 -
深入理解队列:LinkedBlockingQueue源码深度解析
队列这个词对于大家来说并不陌生,大家都参加过军训,教官会要求大家站成一个队列,从队列头报数到队列尾。这个例子是来自生活,当然,在编程世界里面,队列的应用也十分广泛,比如线程池、消息队列等,底层原理都是使用的队列的思想。本文将深度解析LinkedBlockingQueue的源码,它是JDK提供的一个队列实现,本文以JDK8的版本为例。一、LinkedBlockingQueue的组织关系Lin...原创 2020-03-26 21:41:35 · 677 阅读 · 0 评论 -
一篇文章深入理解分布式锁
分布式应用经常会遇见并发问题,如果并发问题处理不好,会产生数据的异常问题,这是一个程序的致命问题,所以对于并发问题,必须的设计一个好的方法来处理它,分布式锁就是解决并发问题的一个比较常用的手段。一、并发问题的引入假设这里有一个分布式应用,它拥有多个客户端,每个客户端都会对存储在Redis中的数据进行计算并修改,计算的前提是获取到最新的数据,然后进行计算,最后写回Redis。在一个不存在并发...原创 2020-03-15 20:47:33 · 890 阅读 · 0 评论 -
一篇文章深入理解JDK8 HashMap
笔者在上一篇文章《深入理解JDK7 HashMap》中详细解析了HashMap在JDK7中的实现原理,主要是围绕其put、get、resize、transfer等方法,本文将继续解析HashMap在JDK8中的具体实现,首先也将从put、get、resize等方法出发,着重解析HashMap在JDK7和JDK8中的具体区别,最后回答并解析一些常见的HashMap问题。在阅读本篇文章之前,建议阅读...原创 2020-02-17 22:29:38 · 1864 阅读 · 11 评论 -
一篇文章深入理解JDK7 HashMap
在日常开发中,集合作为存储数据的容器,被广泛使用在程序代码中,本文将从JDK集合类代表HashMap出发,着重理解HashMap底层实现。一、Map家族关系图在正式讨论HashMap之前,我们有必要把Map家族的继承实现关系展示出来,方便理解后续的内容。上图很详细地展示了Map家族中各个成员之间的继承或者实现关系。Map接口是双列集合的顶层父接口,该集合中每个元素都是键值对key-va...原创 2020-02-11 22:21:35 · 2108 阅读 · 10 评论