摘要: Java线程池。 作者:IT王小二 博客:https://itwxe.com 一、为什么要用线程池 1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 3、提高线程的可管理性。线程是稀缺资源,如果无限制地 阅读全文
posted @ 2021-06-21 12:26 IT王小二 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 并发容器。 作者:IT王小二 博客:https://itwxe.com 一、小知识 1. hash 就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列 阅读全文
posted @ 2021-06-20 15:24 IT王小二 阅读(179) 评论(0) 推荐(0) 编辑
摘要: Java 显式锁。 作者:IT王小二 博客:https://itwxe.com 一、显式锁 什么是显式锁? 由自己手动获取锁,然后手动释放的锁。 有了 synchronized(内置锁) 为什么还要 Lock(显示锁)? 使用 synchronized 关键字实现了锁功能的,使用 synchroni 阅读全文
posted @ 2021-06-18 15:06 IT王小二 阅读(291) 评论(0) 推荐(1) 编辑
摘要: Java线程的并发工具类。 作者:IT王小二 博客:https://itwxe.com 一、fork/join 1. Fork-Join原理 在必要的情况下,将一个大任务,拆分(fork)成若干个小任务,然后再将一个个小任务的结果进行汇总(join)。 适用场景:大数据量统计类任务。 2. 工作窃取 阅读全文
posted @ 2021-06-17 16:59 IT王小二 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 线程基础、线程之间的共享和协作。 作者:IT王小二 博客:https://itwxe.com 一、基础概念 1. 进程和线程 进程是操作系统进行程序运行资源(资源包括:CPU、内存空间、磁盘 IO 等)分配的最小单位,例如我们的 idea,chrome就是一个进程。 线程是 CPU 调度的最小单位, 阅读全文
posted @ 2021-06-16 12:21 IT王小二 阅读(130) 评论(0) 推荐(0) 编辑
摘要: JVM 性能优化。 作者:IT王小二 博客:https://itwxe.com 一、内存溢出 内存溢出的原因:程序在申请内存时,没有足够的空间。 1. 栈溢出 方法死循环递归调用(StackOverflowError)、不断建立线程(OutOfMemoryError)。 2. 堆溢出 不断创建对象, 阅读全文
posted @ 2021-06-15 10:12 IT王小二 阅读(690) 评论(0) 推荐(2) 编辑
摘要: JVM 的执行子系统。 作者:IT王小二 博客:https://itwxe.com 一、Class类文件结构 1. JVM的平台无关性 与平台无关性是建立在操作系统上,虚拟机厂商提供了许多可以运行在各种不同平台的虚拟机,它们都可以载入和执行字节码,从而实现程序的一次编写,到处运行。 各种不同平台的虚 阅读全文
posted @ 2021-06-13 15:01 IT王小二 阅读(157) 评论(0) 推荐(0) 编辑
摘要: JVM 垃圾回收算法和垃圾回收器。 作者:IT王小二 博客:https://itwxe.com 一、垃圾回收的区域 栈:栈中的生命周期是跟随线程,所以一般不需要关注。 堆:堆中的对象是垃圾回收的重点。 方法区:这一块也会发生垃圾回收,不过这块的效率比较低,一般不是我们关注的重点。 二、怎么判断对象的 阅读全文
posted @ 2021-06-12 12:24 IT王小二 阅读(317) 评论(0) 推荐(0) 编辑
摘要: JVM中的对象。 作者:IT王小二 博客:https://itwxe.com 一、对象的创建过程 检查加载 → 分配内存 → 内存空间初始化 → 设置 → 对象的初始化 1. 检查加载 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用 阅读全文
posted @ 2021-06-11 14:55 IT王小二 阅读(79) 评论(0) 推荐(0) 编辑
摘要: JVM组成结构。 作者:IT王小二 博客:https://itwxe.com 一、JavaSE体系 JavaSE,Java 平台标准版,为 Java EE 和 Java ME 提供了基础。 JDK:Java 开发工具包,JDK 是 JRE 的超集,包含 JRE 中的所有内容,以及开发程序所需的编译器 阅读全文
posted @ 2021-06-10 09:28 IT王小二 阅读(133) 评论(0) 推荐(0) 编辑