
JUC&JVM
文章平均质量分 96
它的目标是简化并发编程的复杂性,提供高效、线程安全的工具类和框架,帮助开发者充分利用多核 CPU 的性能,提升程序的并发处理能力和稳定性。
小安同学iter
秉持开源原则--分享学习笔记,学习心得。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM 类加载过程/对象创建过程/双亲委派机制/垃圾回收机制
类加载的过程是指将类的.class文件加载到JVM内存当中,并对数据进行处理,最终形成可以被JVM使用的Java的类型的过程。文件 -> 读到内存(方法区) -> 在堆里创建。常量(编译期可知)则在此阶段直接赋指定值。文件是否合法、安全。(内存地址/偏移量)。原创 2025-06-15 14:33:39 · 888 阅读 · 0 评论 -
JUC并发编程(八)JUC工具包
概念:全称是AbstractQueueSynchroizer,是阻塞式锁和相关的同步器工具的框架。1 原子状态管理:存在一个被volatile修饰的状态变量2 CLH变体队列:核心数据结构双向链表可以实现公平锁的线程排队。3 线程阻塞/唤醒机制:条件变量Conditional,基于LockSupport.park()/unpark()实现高效线程挂起与唤醒。实现:自定义不可重入锁二 ReentrantLock原理JUC并发编程(三)死锁/活锁/饥饿/ReenTrantLock基础使用-CSD原创 2025-06-12 08:55:18 · 923 阅读 · 0 评论 -
JUC并发编程(七)这就是线程池
线程池默认初始状态是空池,是懒加载,此时不会占用系统资源,最大线程数是包括核心线程和救急线程,当任务提交时,判断当前线程是否达到核心线程数,没有达到就创建一个核心线程去执行任务(优先创建而不是使用线程池当中的now<core),当当前线程数达到核心线程数,会尝试进入队列,没满就在队列当中等待空闲线程,如果满了就会用到这里的救急线程,先判断当前线程数是否达到最大线程数,没达到最大线程就创建救急线程去执行任务,达到最大线程数就触发拒绝策略。后面创建的救急线程存在最大空闲时间当任务执行结束后,空闲时原创 2025-06-10 08:24:37 · 987 阅读 · 1 评论 -
JUC并发编程(六)CAS无锁实现/原子整数/原子引用/原子数组/字段更新
在调用compareandSet时,会将这个读取值与现在实际的值进行对比如果出现不同说明在这期间有其他线程对值进行修改,这样的话将会重试,再次读取,再次比较,再次判断以达到最终的效果。的类,它提供了直接操作内存、绕过 JVM 安全机制的能力,被称为 "Java 的后门"。无锁情况下,及时重试失败线程始终在高速运行,而synchroized会让线程在没有获得锁的时候,发生上下文切换,进入阻塞。利用字段更新器,可以针对对象的某个域进行原子操作,只能配合volatile修饰的字段使用,否则会出现异常。原创 2025-06-08 14:41:15 · 981 阅读 · 0 评论 -
JUC并发编程(五)volatile/可见性/原子性/有序性->JMM(Java内存模型)
volatile 解决的是 "一个线程写,其他线程读" 时的有序性和可见性问题,而解决 "多个线程同时写" 需要更强的同步机制。原创 2025-06-07 16:49:40 · 1141 阅读 · 0 评论 -
JUC并发编程(四)常见模式
两阶段终止模式(Two-Phase Termination Pattern)是一种多线程编程中安全终止线程的设计模式。它的核心思想是:在终止线程前,先发出终止请求(第一阶段),然后线程在完成必要清理工作后再真正终止(第二阶段)。这种模式避免了直接强制终止线程导致的资源泄露、数据不一致等问题原创 2025-06-07 16:49:35 · 1249 阅读 · 0 评论 -
JUC并发编程(三)死锁/活锁/饥饿/ReenTrantLock基础使用
死锁是并发编程中一种常见的系统状态,指,若无外力干预,这些线程将无限期阻塞下去。网上看见一个例子(A等B,B等A)面试官问:跟我说说什么是死锁?回答:你给我offer我就跟你说。面试官:你说我才能给你offer。......二者一直僵持下去.....原创 2025-06-06 09:53:08 · 1042 阅读 · 0 评论 -
JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
一段代码块内如果存在对共享资源的多线程读写操作,撑这段代码区为临界区。多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件为了避免临界区的竞态条件发生,有多种手段可以达到目的。原创 2025-06-04 20:50:46 · 1174 阅读 · 0 评论 -
JUC并发编程(一)进程/并发/同步/栈帧/上下文切换/创建线程的方式/join/yield/interrupt/sleep
1 进程(Process):一个正在运行的程序,操作系统分配资源的基本单位。拥有独立的内存空间。2 线程(Thread):一个进程内部的一条独立执行的路径,CPU调度的基本单位,共享所处进程的内存空间和资源。原创 2025-06-02 16:28:46 · 935 阅读 · 0 评论 -
Java进阶六-多线程
进程 (Process): 进程是程序的基本执行实体。线程 (Thread):应用软件中相互独立,可以同时运行的功能并发 (Concurrency): 在同一时刻,有多个指令在单个CPU上交替运行。原创 2024-11-26 20:56:47 · 898 阅读 · 0 评论