摘要:
线程池创建方式 一、方式一:通过ThreadPoolExecutor构造函数来创建(推荐) 方式二:通过 Executor 框架的工具类 Executors 来创建。 Executors工具类提供的创建线程池的方法如下图所示: 可以看出,通过Executors工具类可以创建多种类型的线程池,包括: 阅读全文
摘要:
Dubbo介绍 概要 Dubbo由阿里巴巴最早于 2011 年发布,是一款高性能的 RPC 框架,专注于服务调用和服务治理。它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务 阅读全文
摘要:
JVM指针压缩实现原理 概要 Java 中的指针压缩(Pointer Compression)是一个与内存管理相关的优化技术,主要应用于 JVM 的对象引用(即指针)的存储方式。指针压缩的目标是减少对象引用占用的内存空间,从而提高内存利用效率,特别是在 64 位系统上。 一、对象的内存布局 在了解指 阅读全文
摘要:
SpringCloud微服务系列 - Hystrix的使用和原理 概要 Hystrix是Netflix开源的一款容错框架。集成到微服务体系里面的一个组件,是微服务体系里面的熔断器。 主要用于处理微服务架构中的故障,提供了一种机制来防止级联故障。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常 阅读全文
摘要:
Java阻塞队列 一、阻塞队列 1. 为什么要用阻塞队列? 在多线程领域,所谓阻塞,是指在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。 使用阻塞队列能够简化多线程编程,是实现生产者-消费者模型等常见并发模式的重要工具。它能够有效地衔接生产者和消费者之间的速度差异,提供一 阅读全文
摘要:
ThreadLocal的使用以及原理 概要 ThreadLocal 是 java 提供的一个方便对象在本线程内不同方法中进行传递和获取的类。用它定义的变量,仅在本线程中可见和维护,不受其他线程的影响,与其他线程相互隔离。 一、ThreadLocal能解决什么问题? 当涉及一个对象需要在很多不同方法之 阅读全文
摘要:
String、StringBuffer和StringBuilder的区别 下面从可变性、是否线程安全等方面来对String、StringBuffer、StringBuilder进行比较。 一、可变性 1. String String 类中使用 final 关键字修饰字符数组来保存字符串。 publi 阅读全文
摘要:
JVM的垃圾收集器 概要 垃圾收集算法就像是 Java 中的接口一样,而垃圾收集器是接口的具体实现。所以,不同的厂商,不同版本的虚拟机实现的方式都有所不同。甚至是很大的差别。 首先,了解下 HotSpot虚拟机中 9款垃圾回收器的发布时间及其对应的 JDK版本,如下图: 接着,了解下 CMS和G1这 阅读全文
摘要:
Java中线程安全的数据结构 Java 提供了多种线程安全的工具类,主要可以分为以下几类: 一、Java Collections Framework 中的线程安全集合 1. Vector Vector是一个动态数组,支持同步操作,线程安全。使用 synchronized 来保证线程安全,效率非常低下 阅读全文
摘要:
AQS实现原理 概要 在并发编程中,锁是一种常用的保证线程安全的方法。Java 中常用的锁主要有两类,一种是 Synchronized 修饰的锁,被称为 Java 内置锁或监视器锁。另一种就是在 JDK1.5版本之后的juc(java.util.concurrent) 包中的各类同步器。这些同步器都 阅读全文