自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JMM

CPU多级缓存结构 java 线程依赖内核线程 mesi 缓存一直性原理(修改、独占、共享、无效)-- 解决可见性,状态变更发送消息(总线嗅探机制) 总线锁 锁总线(效率较低) 多线程 线程上下文切换 ,任务执行数据(寄存器数据,指令指针等) 存放在TSS(任务状态断) 死锁 jps 查看java 线程 jstack 线程id 查看详情 JMM (工作内存、主内存) 规则 原子性、有序性、可见性 jvm 内存区域 方法区、程序计数器、Java虚拟机栈、本地方法栈、堆内存(元空间) ...

2021-02-08 14:25:46 74

原创 2020-12-22

cpu Rgtister : 寄存器 ALU: 运算单元 PC : programe control 程序计数器 缓存行伪共享 cpu运行处理数据时,根据局部性原理会加载一块连续内存中的数据,该内存称作缓存行,windows操作系统中缓存行对应的是64字节大小。对于多线程处理的情况,多个线程同时处理该缓存行中的不同数据,根据MESI协议会频繁的导致cpu读取缓存行中的数据失效,影响cup处理的效率。 处理方式: 对齐填充 ...

2020-12-25 14:43:06 98

原创 ReentrantLock

首先说明一下,这篇文章是学习AQS时候,参考模仿一位大佬写的。主要用于加深自己的记忆。具体的链接点击这里 ReentrantLock概述 ReentrantLock 是java 独占锁的一种实现方式。通过 ReentrantLock lock = new ReentrantLock(); lock.lock(); lock.unLock() 方法可以完成线程的对同步代码的加锁解锁过程。同时,ReentrantLock 是属于可重入锁,同一个线程可以多次获取锁,不需要处理锁竞争。默认是非公平锁,如果需要使用公

2020-08-07 16:36:18 134

原创 volatile关键字及相关原理

volatile关键字是一个轻量级的同步机制。保证了JMM中的可见性、有序性(禁止指令的重排序),但不保证原子性。 首先简单了解一下JMM(java内存模型),是针对java虚拟机内存管理的一套规范。JMM要求可见性、原子性、有序性。 原子性 JMM保证的原子性变量操作包括read、load、assign、use、store、write,而long、double非原子协定导致的非原子性操作基本可以忽略。如果需要对更大范围的代码实行原子性操作,则需要JMM提供的lock、unlock、synchronized

2020-06-05 16:47:31 135

原创 jvm 内存布局笔记

Oracle Hotspot JVM中内存的堆布局是平时接触比较多的。主要分为Young/Old/Perm 三块区域,也就是年轻代/年老代/持久代。 基于分代的垃圾回收算法:思路是把对象按照寿命长短来分组,分为年轻代和年老代,新创建的对象被分配在年轻代,如果对象在经过几次回收后仍然存活,那么就把这个对象划分到年老代。年老代的收集频度不像年轻代那么频繁,这样就减少了每次垃圾收集时所扫描的对象的数量,...

2019-04-28 19:35:47 254

转载 Java中的AQS(转载)

原文链接(https://www.toutiao.com/i6631521306548371981/?group_id=6631521306548371981) AQS AbstractQueuedSynchronizer,抽象队列同步器 首先我们来看看,如果用java并发包下的ReentrantLock来加锁和释放锁。 ReentrantLock(可重入锁),其使用例子是 ReentrantLo...

2019-04-25 09:40:40 4194

原创 java线程池之线程的重复使用

java线程池之线程的重复使用 Java中提供了多种线程池的操作,再这里记录自己再学习线程池使用的疑惑,线程池中的线程是如何重复利用的?此处以newFixedThreadPool为例。 1.线程池的创建,指定线程池核心线程和最大线程数量nThreads public static ExecutorService newFixedThreadPool(int nThreads) { ...

2018-10-08 10:36:45 5067

空空如也

空空如也

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

TA关注的人

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