摘要:
抄录于 https://www.cnblogs.com/sky-chen/archive/2019/04/16/10718759.html 1. Feign源码解析 1.1. 启动过程 1.1.1. 流程图 1.1.2. 解释说明 Feign解析过程依赖Spring的初始化,它通过实现ImportB 阅读全文
摘要:
前言在网上大家很多都看到过这样一句话:“JVM内存最好不要超过32G”。今天我们就来分析一下为什么?32G到底是怎么算出来的。 JAVA对象模型我们先了解一下,一个JAVA对象的存储结构。在Hotspot虚拟机中,对象在内存中的存储布局分为 3 块区域:对象头(Header)、实例数据(Instan 阅读全文
摘要:
抄录于 https://www.cnblogs.com/jssj/p/14348271.html 《Java 底层原理》Jvm对象结构和指针压缩 阅读目录 前言 对象内存结构 计算对象大小 指针压缩 总结 回到目录 前言 Java 程序调优是一个程序员必备的技能。 回到目录 对象内存结构 对象头: 阅读全文
摘要:
抄录于 https://www.cnblogs.com/qianguyihao/p/4748392.html 主要内容如下: JVM启动流程 JVM基本结构 内存模型 编译和解释运行的概念 一、JVM启动流程: JVM启动时,是由java命令/javaw命令来启动的。 二、JVM基本结构: JVM基 阅读全文
摘要:
抄录于 https://www.cnblogs.com/null-qige/p/9481900.html java内存模型JMM理解整理 什么是JMM JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当 阅读全文
摘要:
抄录于 https://www.cnblogs.com/xieyanke/p/13441318.html BlockingQueue原理 概念 BlockingQueue 翻译成中文阻塞队列,顾名思义就是线程使用队列时会阻塞当前线程; BlockingQueue 继承了Collection,具有一般 阅读全文
摘要:
定时任务示例代码: 先提交的任务500ms再执行,后提交的任务100ms后执行,打印结果是后提交的任务先执行,本文主要分析定时线程池内部实现,这里面定时操作是怎么实现的,怎么保证顺序的 ScheduledThreadPoolExecutor executor = (ScheduledThreadPo 阅读全文
摘要:
我们都知道在向线程池提交任务时,会有以下三种情况:如果线程池内运行的线程数小于设置的 corePoolSize 值,不论是否有空闲线程都会新创建一个线程执行该任务1. 如果线程数已到达 corePoolSize 值,则会将任务放入任务队列2. 当任务队列已满,并且线程数小于设置的 maximumPo 阅读全文
摘要:
抄录于 https://www.cnblogs.com/superfj/p/7544971.html 由浅入深理解Java线程池及线程池的如何使用 前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担。线程本身也要占用内存空间,大量的线程会占用 阅读全文
摘要:
抄录于 https://www.cnblogs.com/xiaoxi/p/9140541.html 一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线 阅读全文
摘要:
Semaphore https://www.cnblogs.com/caoleicoding/p/15015067.html 示例代码 Semaphore也是jdk1.5引入的组件,它的字面意思是信号量,但是单从字面翻译我们是无法得知它的作用的,根据官方注释以及网上的一些解释,semaphore简单 阅读全文
摘要:
CyclicBarrier回环栅栏字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier了。一个同步辅助 阅读全文
摘要:
CountDownLatch的理解和使用 在笔者想要了解Thrift时候,找到一个博主写的系统间通信技术的架构设计,在了解和学习的过程中遇到很多小问题和基础知识,自己还是不够清楚,就查询和总结下。 因为笔者也都是从网上找的一些资料,好的资料笔者都是自己收敲一遍,这样觉得能够加深下印象,引发更多的思考 阅读全文
摘要:
转自:https://www.jianshu.com/p/78989cd553b4 一、Segment HashMap 在高并发下会出现链表环,从而导致程序出现死循环。高并发下避免 HashMap 出问题的方法有两种,一是使用 HashTable,二是使用 Collections.syncroniz 阅读全文