自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

疾风先生的博客

Stay focused,Keep shipping

  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 并发编程之伪共享

1. CPU高速缓存与伪共享CPU缓存与一致性在CPU高速缓存与内存屏障的介绍中,CPU在对数据进行读取的时候遵循缓存一致性来解决高速缓存的数据不一致问题,现简述如下:CPU高速缓存包含L1-L3 Cache缓存,每个缓存Cache都是分段(line)存储的,也就是缓存段(Cache line)根据缓存的一致性,多核CPU处理器情况下,当其中一个CPU对其所在的Cache进行写操作并...

2020-01-29 18:40:54 442

原创 并发原子性技术之CAS机制

1. CAS机制CAS定义从wiki百科中,Compare-and-swap简称为“CAS”,是属于并发多线程中实现同步原子操作的指令,是依赖于硬件层次的原语发起的原子操作从程序代码理解上,CAS包含check then act的两个动作,这两个动作在处硬件的处理器上是具备原子性,也就是在操作系统底层上已经实现对CAS算法的原子性保证CAS 使用条件需要输入两个数值,一个是...

2020-01-28 21:18:57 416

原创 并发编程面临的问题小结

1. 临界区与数据竞争(竞态条件)java代码// sahred.javaint num = 0; // 在多线程中对于共享资源存在数据竞争,竞态条件// mutil.javarun(){ num ++; // 临界区 }通过上述代码可知临界区: 在并发多线程中执行一系列对共享资源的修改操作的代码区域,在该区域下的操作的执行结果会对其他线程产生影响,称该代码区域为...

2020-01-27 13:12:25 4106

原创 final线程安全与工作原理

1.final语义与使用final的语义编译器做的处理编译器可以跨同步屏障移动对final修饰的字段值进行读取和调用任意或未知的方法编译器对于final修饰的字段允许保留缓存其在寄存器中,而在必须重新加载非final字段的情况下,将通过使用缓存的方式保留着而不从主内存中加载数据并发线程下是安全的对于final修饰的字段在所有线程中是属于不可变(基本类型值不可变,引用类...

2020-01-26 21:45:21 1661

原创 java程序运行堆栈分析

1. java程序源代码与字节码源代码public class StackHeapAnalysis { // java 运行堆栈分析 public static void main(String[] args) { //define my wallet totel balance int balance = 500; ...

2020-01-24 20:05:29 643

原创 JVM运行数据区说明

1. JVM运行数据区概览jvm运行数据区图例图例说明JVM运行数据区可以划分为线程独占和线程共享两部分线程独占(封闭): 每个线程都拥有它的独立的内存空间,jvm在运行程序时就会为线程开辟一个内存空间来存储线程相关的信息,随着线程生命周期创建和销毁线程共享: 所有线程都能够访问当前的数据区域,随着GC的生命周期的创建和销毁2. JVM运行数据区分解说明线程共享...

2020-01-24 17:11:29 337

原创 Java之.class文件与字节码文件

1. JVM运行数据区概述.class与字节码bytecode.class: 是指文件扩展名称为.class的文件,表示由java源程序经过java编译器编译而成且由JVM执行的二进制文件,因此可以通过拥有一份.class文件在不同的操作系统平台上的JVM执行,实现跨平台运行的特性字节码bytecode: 简单说不是文件,而是JVM操作的指令格式,通常我们通过javap -c -v x...

2020-01-24 16:28:57 5621 1

原创 volatile工作原理

在前文中已经讲解到volatile的使用以及原子性的问题,volatile修饰的变量可以实现线程对变量的写操作能够让其他线程“看到”当前最新的变量数据值,从内存语义上而言,相当于告诉线程读取当前变量要从主内存中读取,对此,现将继续前文的volatile继续深入原理分析.1. volatile作用与使用场景volatile规则与作用基于Happen-Before的原则,对volatile...

2020-01-23 16:14:31 427

原创 关键字volatile的使用与原子性问题

1. volatile的使用java源代码public class VolatileUsedClass { private static int sharedVar = 10; public static void main(String[] args) throws Exception { Thread thread1 = new Thread(ne...

2020-01-22 15:19:52 340

原创 Java内存模型之简要知识与规范梳理

1. JMM简要知识语义规范Java编程语言的语义允许编译器和微处理器执行优化,从而与不正确同步的代码进行交互来完成工作.线程内语义是单线程程序的语义,它允许根据线程内读操作看到的值来完全预测线程的行为;由于单线程内的实现是在其上下文执行的, 可以通过评估线程的实现从而确定执行中的线程t的操作是否合法.程序遵循线程内语义: 在线程隔离状态下,每个线程的操作必须由该线程的语义控制,但是...

2020-01-20 14:04:42 269

原创 Java内存模型之可见性分析

1. JMM模型描述给定程序以及一个检测程序是否合法的执行跟踪,JMM工作原理是检查执行跟踪中的每个读,并根据某些规则检查读观察到的写是否有效JMM中可能产生的行为表象为不论代码是如何实现程序行为,只要保证程序的所有结果执行和JMM预期的结果一致即可基于上述的第二点,对实现者执行的代码进行转换的实现就比较自由,可以实现操作的重排序甚至删除不必要的同步操作代码2. JMM之数据共享与竞争...

2020-01-19 21:43:02 294

原创 synchronized的工作原理(三)

1. synchronized的锁存储以及锁分类synchronized的存储位置: 对象MarkWorkJVM的ObjectHeader信息MarkWord: hashcode(哈希code) + age(分代年龄age) + biased_lock(偏向锁标志) + lock (锁标志)Class Metadata Address(类元信息地址)Array Length: ...

2020-01-15 11:20:05 359

原创 synchronized基于内存语义的工作原理(二)

基于工作原理一可知同步关键字底层是基于JVM操作监视器的同步指令原语monitorenter和monitorexit来实现,这次将会通过抽象的内存语义来说明侧面说明加锁和解锁的方式1. 工作内存与主内存定义主内存: 一般就是计算机操作系统上的物理内存,简言之,即使一般我们所说的计算机的内存含义工作内存: 基于JMM(Java内存模型)规范规定,线程使用的变量将会把主内存的数据变量复制...

2020-01-11 16:18:48 386

原创 CPU高速缓存与内存屏障

1. CPU缓存cpu高速缓存的由来在CPU的全部取指令周期中(程序计算),至少需要访问一次存储器(也就是我们所说物理内存上的数据)通常需要多次访问存储器的取操作数或者保存结果,CPU处理计算的速度明显受限于访问存储器的限制因此解决方案就是利用局部性原理,在CPU与物理内存之间提供一个容量小并且速度快的存储器,称为高速缓存高速缓存概述缓存是分“段”(line)的,一个段对...

2020-01-09 19:13:14 611

原创 synchronized基于JVM规范的工作原理(一)

1. synchronized同步方法synchronized同步方法的字节码还原java声明的方法在jvm中的结构格式method_infomethod_info { u2 access_flags; u2 name_index; u2 descriptor_index...

2020-01-07 18:48:00 375

原创 Java线程synchronized使用

1. synchronized 同步方法作用在实例化方法上,监视器锁对象为当前实例对象this作用在静态方法上,监视器锁对象为当前Class对象同步实例方法产生的效果:1. 控制当前方法只能有一个线程执行,其他线程只能处于阻塞状态2. 换言之,每个使用synchronized关键字声明的方法都是处于一个临界区,而Java只允许执行对象的一个临界区同步静态方法产生的效果1. ...

2020-01-07 10:23:13 286

空空如也

空空如也

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

TA关注的人

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