随笔分类 - JDK常用源码分析
基于 JDK1.8 的常用源码分析
摘要:1. execute 和 submit 的区别 前面说了还需要介绍多线程中使用 execute 和 submit 的区别(这两个方法都是线程池 ThreadPoolExecutor 的方法)。 1.1 方法来源不同 execute 方法是线程池的顶层接口 Executor 定义的,在 ThreadP
阅读全文
摘要:一、AQS 简介 AQS,就是 AbstractQueuedSynchronizer,在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排队,等待通知等等一些底层的实现处理。AQS的核心也包括了这些方
阅读全文
摘要:每当你想要努力一把的时候,都是未来的你在求救!!! 1. 概述 1.1 HashMap 与 HashTable HashMap 线程不安全 因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码: publ
阅读全文
摘要:每当你想要努力一把的时候,都是未来的你在求救!!! 1. 概述 HashMap 是我们开发中很常用的一个键值对集合。底层基于散列算法实现,HashMap 允许 Null 值和 Null 键,并且键不能重复(重复会被覆盖),计算键的 Hash 值时 Null 键的哈希值是 0。另外,HashMap 不
阅读全文