林烟夜暖

阅读JDK、框架源码的总结,微服务、RPC、服务治理实践等

Thread类之Java并发编程的基础

Thread

Thread类之Java并发编程的基础 一、线程的简介和一些属性 1.ThreadMXBean获取线程相关信息 public class MultiThread { public static void main(String[] args) { // 获取Java线程管理MXBean,一个Java虚拟机只有该接口的一个单独实例(一个Java进程) ThreadMXBean ...

String类问题答疑

String

String类问题答疑 1. String为什么不可变? public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ privat...

系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路

问题排查思路

系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路 转自系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路 ​ 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而...

DelayQueue源码分析

DelayQueue/BlockingQueue

DelayQueue源码分析 DelayQueue是一个包含Delayed类型元素的无界阻塞队列,只有在元素延迟时间过期后才能获取这些元素。DelayQueue的特性基本上是由BlockingQueue、PriorityQueue和Delayed的特性来决定的。DelayQueue通过Delayed接口,使得不同元素之间能按照剩余的延迟时间进行排序(Delayed.getDelay()),...

LinkedTransferQueue源码分析

TransferQueue/BlockingQueue

LinkedTransferQueue源码分析 参考: Java 7中的TransferQueue 并发编程—— LinkedTransferQueue LinkedTransferQueue原理分析

SynchronousQueue源码分析

BlockingQueue

SynchronousQueue源码分析 SynchronousQueue是一种特殊的阻塞队列,不同于LinkedBlockingQueue、ArrayBlockingQueue等阻塞队列,其内部没有任何容量,任何的入队操作都需要等待其他线程的出队操作,反之亦然。任意线程(生产者线程或者消费者线程,生产类型的操作比如put、offer,消费类型的操作比如poll、take)都会等待直到获得...

LinkedBlockingQueue源码分析

BlockingQueue

LinkedBlockingQueue源码分析 在前面ArrayBlockingQueue源码分析中,已经对JDK中的BlockingQueue做了一个回顾,同时对ArrayBlockingQueue中的核心方法作了说明,而LinkedBlockingQueue作为JDK中BlockingQueue家族系列中的一员,由于其作为固定大小线程池(Executors.newFixedThread...

ArrayBlockingQueue源码分析

BlockingQueue

ArrayBlockingQueue源码分析 本文主要分析BlockingQueue的实现之一——ArrayBlockingQueue的原理与实现,其底层使用重入锁ReentrantLock与条件Condition实现线程的并发控制与阻塞等待。 一、Queue/BlockingQueue接口分析 1.Queue接口 在Queue接口中,除了继承Collection接口中定义的方...

CopyOnWriteArrayList源码分析

CopyOnWriteArrayList/CopyOnWriteArraySet

CopyOnWriteArrayList源码分析 一、CopyOnWriteArrayList的特点 它最适合于具有以下特征的应用程序:List 大小通常保持很小,只读操作远多于可变操作(需要拷贝数组),需要在遍历期间防止线程间的冲突。 它是线程安全的。 因为通常需要复制整个基础数组,所以可变操作(add()、set() 和 remove() 等等)的开销很大。 迭代器...

ConcurrentHashMap源码分析(基于JDK8)

ConcurrentHashMap/HashMap/HashTable

ConcurrentHashMap源码分析(基于JDK8) ConcurrentHashMap源码分析(JDK7)这篇文章分析了ConcurrentHashMap在JDK7中的实现细节。JDK7中,ConcurrentHashMap采用了分段锁的机制,实现并发的更新操作,底层采用数组+链表的存储结构。其包含两个核心静态内部类Segment和HashEntry。一个 ConcurrentHa...