自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java对象内存布局和synchronized升级

引言:Object obj = new Object(); 理解?首先,这个对象肯定是存在jvm的堆内存的。然后谈谈它的堆内存中的布局。内存布局对象头、实例数据、对齐填充(保证8个字节的倍数)。对象头对象头又分为Mark Word和Class Pointer(类型指针),如果是数组对象,还有一个保存数组长度的空间Length。Mark Word默认存储对象的HashCode、分代年龄和锁标志位等信息。这些信息都是与对象自身定义无关的数据,所以MarkWord被设计成一个非固定的数据结构以便在极

2021-10-21 22:56:50 120

原创 原子操作类

基础类型原子类AtomicInteger,AtomicBoolean,AtomicLong。底层都是CAS,会出现ABA问题。常用API:API说明public final int get()获取当前的值public final int getAndSet(int newValue)获取当前的值,并设置新的值public final int getAndIncrement()获取当前的值,并自增public final int getAndDecrement

2021-10-16 23:42:43 96

原创 ThreadLocal

是什么ThreadLocal提供线程局部变量,如果创建一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际多线程操作的时候,操作的是自己本地内存中的变量,从而规避了线程安全问题。ThreadLocal实例通常是类中的私有静态字段。ThreadLocal并不解决线程间共享数据的问题。\color{#FF0000}{ThreadLocal 并不解决线程间共享数据的问题。}ThreadLocal并不解决线程间共享数据的问题。使用场景ThreadLocal 适用于变量在线

2021-10-16 21:01:09 513

原创 volatile的使用

作用可见性有序性内存语义当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中,当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,直接从主内存中读取共享变量。所以volatile的写内存语义是直接刷新到主内存中,读的内存语义是直接从主内存中读取。底层实现内存屏障使用场景普通变量赋值可以,但是含复合运算的赋值不行(类似i++),也不能修饰引用类型,不能保证对象内部的属性可见性。volatile int a = 10; /

2021-10-11 21:12:04 269

原创 CAS(CompareAndSwap)

是什么 CAS的全称为Compare-And-Swap,它是一条CPU并发原语,中文翻译成比较并交换,实现并发算法时常用到的一种技术,它包含三个操作数——内存位置、预期原值及更新值。执行CAS操作的时候,将内存位置的值与预期原值比较:如果相匹配,那么处理器会自动将该位置值更新为新值,如果不匹配,处理器不做任何操作,多个线程同时执行CAS操作只有一个会成功,这个过程是原子的。​ 由于CAS是一种系统原语,原语属于操作系统用语范畴,是由若干条指令组成的,用于完成某个功能的一个过程,并且原语的执行必须是连

2021-09-28 23:31:41 139

空空如也

空空如也

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

TA关注的人

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