【今日推荐】十八岁出门远行
柏油马路起伏不止,马路像是贴在海浪上。我走在这条山区公路上,我像一条船。这年我十八岁,我下巴上那几根黄色的胡须迎风飘飘,那是第一批来这里定居的胡须,所以我格外珍重它们。我在这条路上走了整整一天,已经看了很多山和很多云。所有的山所有的云,都让...
柏油马路起伏不止,马路像是贴在海浪上。我走在这条山区公路上,我像一条船。这年我十八岁,我下巴上那几根黄色的胡须迎风飘飘,那是第一批来这里定居的胡须,所以我格外珍重它们。我在这条路上走了整整一天,已经看了很多山和很多云。所有的山所有的云,都让...
本篇主要介绍一下,JVM运行时数据区的内容。概述首先大概介绍一下下图所示的内容。JVM运行时数据区主要分为了两大部分的内容:线程共有的方法区(Method Area)和堆(Heap)、线程私有的虚拟机...
ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的。ClassLoader通过各种方式,将CLass信息的二进制流读入系统,然后交给JVM进行连接、初始...
Class文件的加载流程如下图所示,其中加载、验证、准备、初始化、和卸载的顺序是固定的,解析有可能会在初始化之后进行。类装载的条件Class只有被使用到的时候才会被装载,一个类或接口在第一次主动使用时...
JVM指令主要包含了一下几种类型:加载和存储指令、运算指令、类型转换指令、对象创建与访问指令、操作数栈管理指令、控制转移指令、方法调用和返回指令、异常处理指令、同步指令等。基于栈的解释器执行过程下面看...
Class文件是由Java语言或者其他语言编译而得到的,然后再交给JVM去加载和执行。对于Class文件,我们可以通过文本编辑器查看它的16进制编码,然后分析它的组成构造。下面我们看一下Class文件...
说到LongAdder,不得不提的就是AtomicLong。AtomicLong是JDK1.5开始出现的,里面主要使用了一个long类型的value作为成员变量。然后使用循环的CAS操作去操作valu...
StampedLock是JDK1.8新引入的锁机制,可以简单的理解为读写锁的改进版本。我们知道读写锁可以让读和读之间完全并发,但是读和写之间是有阻塞的。StampedLock使用了一种乐观锁的读策略,...
CompletableFuture是JDK1.8新增的工具类。它继承了Future和CompletionStage接口,里面提供了大量的链式调用的API。下面简单的介绍一下其用法:异步执行任务Comp...
Future模式是一种让调用线程可以异步处理任务的设计模式,它可以让调用线程利用异步处理的时间去执行其他任务,从而使硬件资源达到一个更好的利用率。参考以下时序图:下面介绍一下各个成员的作用:MainT...
伪共享问题(false sharing)对于解释伪共享问题,就需要了解一下缓存行的相关概念。缓存行是主存复制到高速缓存的最小单位,一般情况下缓存行的大小为32~128字节(通常为64字节)。在多线程程...