自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 并发编程夯实之路-线程池

线程池 “线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不 仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、 调优和监控。 线程池优势 重用存在的线程,减少线程创建,消亡的开销,提高性能 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资 源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 什么时候使用线程池? 单个任务处理时间比较

2021-06-20 05:41:28 48

原创 并发编程夯实之路-volatile

1、Java的内存模型(JMM) 在仔细讲解Java的volatile关键字之前有必要先了解一下【Java的内存模型】 Java的内存模型简称JMM(Java Memory Model),是Java虚拟机所定义的一种抽象规范用来屏蔽【不同硬件】和【操作系统】的【内存访问差异】。 让Java程序在各种平台下都能达到一致的内存访问效果。 Java内存模型图片   主内存 主内存可以简单理解为计算机当中的内存,但又不完全等同。 主内存被所有线程共享,对于一个共享变量(比如静态变量,或是堆内存中的实例

2021-06-20 05:07:49 117

原创 并发编程夯实之路-抽象队列同步器AQS

AQS(AbstractQueuedSynchronizer) AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。它是一个Java提高的底层同步工具类,比如CountDownLatch、ReentrantLock,Semaphore,ReentrantReadWriteLock,SynchronousQueue,FutureTask等等皆是基于AQS的 AQS的核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线

2021-06-20 01:41:17 64

原创 并发编程夯实之路-synchronized

synchronized关键字 可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。可能锁对象包括: this, 临界资源对象,Class 类对象 同步方法 同步方法锁定的是当前对象。当多线程通过同一个对象引用多次调用当前同步方法时, 需同步执行。 public synchronized void test() { System.out.println("测试一下"); } 同步代码块 同步代码块的同步粒度更加细致,是商

2021-06-19 17:53:00 62

原创 JVM虚拟机夯实之路-内存分配与回收策略

1.对象内存回收 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。 1.1引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加1;当引用失效,计数器就减1;任何时候计数器为0的对象就是不可能再被使用的。 优点:引用计数收集器可以很快的执行,交织在程序运行中。对程序需要不被长时间打断的实时环境比较有利。 缺点: 无法检测出循环引用。如父对象有一个对子对象的引用,子对象反过来引用父对象。这样,他们的引用计数永远不可能为0。

2021-06-13 07:19:17 50

原创 JVM虚拟机夯实之路-Java 内存区域

Java 内存区域 1. 运行时数据区域 首先来了解下JVM运行时数据区域   1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。 1.2 Java虚拟机栈 线程私有,生命周期和线程一致。描述的是 Java 方法执行的内存模型:每个方法在执行时都会床创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方

2021-06-13 06:57:25 48

原创 JVM虚拟机夯实之路-垃圾回收器

JVM 垃圾回收器 首先来看一下垃圾收集器的种类 新生代收集器:Serial、ParNew、Parallel Scavenge 老年代收集器:CMS、Serial Old、Parallel Old 整堆收集器: G1 1.Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC) Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了。大家看名字就知道这个收集器是一个单线程收集器了。它的“ 单线程” 的意义不仅仅意味着它只会使用一条垃圾收集线程去完成垃圾收集工作

2021-06-12 07:53:48 63

原创 JVM虚拟机夯实之路-JVM类加载机制

JVM类加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。   2.类的加载过程 加载 >> 验证 >> 准备 >> 解析 >> 初始化

2021-06-12 07:33:31 60

原创 JVM虚拟机学习笔记

JVM虚拟机1.Java 内存区域1.1 运行时数据区域1.1.1 程序计数器1.1.2 Java 虚拟机栈1.1.3 本地方法栈1.1.4 Java 堆1.1.5 方法区1.1.6 运行时常量池1.1.7 直接内存2.JVM 对象揭秘2.1 对象的内存布局2.2 对象的访问定位2.2.1 通过对象的访问定位2.2.2 使用直接指针访问3.垃圾回收器与内存分配策略3.1 判断对象是否可回收3.1.1 引用计数法3.1.2 可达性分析算法3.2垃圾回收算法3.2.1 标记 —— 清除算法3.2.2 复制算法3

2021-06-10 05:13:43 357

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除