![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发相关分析
szhlcy
这个作者很懒,什么都没留下…
展开
-
Java并发相关文章说明
对于Java并发这一块的知识,一直一来都是东一块西一块的,自己没有进行一次整体,自己的笔记也是有点凌乱。就想着整理一份完整的出来,参考源码跟资料进行整理。同时也监督自己养成一个好的周期性写博客的习惯。一下是对于相关知识的整理,如果缺少什么可以进行留言,我会进行补充。1.并发相关的原子性,可见性,顺序一致性,happen-before2.volatile关键字的作用和汇编原理3.synchr...原创 2019-10-09 15:14:36 · 86 阅读 · 0 评论 -
6.juc包下的原子类AtomicInteger,AtomicLong等AtomicXXX介绍
在介绍juc中的原子类之前,先看看官方文档对java.util.concurrent.atomic包的介绍官方文档地址这里截取翻译之后的部分描述1. 支持对单个变量进行无锁线程安全编程2. 类的实例`AtomicBoolean`,`AtomicInteger`,`AtomicLong`和`AtomicReference` 每个提供访问和更新相应的类型的单个变量3. 这些类不是 java.l...原创 2019-10-15 16:01:35 · 231 阅读 · 0 评论 -
java的JUC包下AtomicXXX中的set跟lazySet区别以及lazySet的原理
AtomicInteger中的部分源码,set方法跟lazySet两个方法都是设置值的,那为何有两个呢public class AtomicInteger extends Number implements java.io.Serializable { static { try { valueOffset = unsafe.objectField...原创 2019-10-15 11:03:37 · 2015 阅读 · 0 评论 -
gcc内嵌汇编简单介绍,以及 __asm__ volatile ("": : :"memory")中memory解释
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例:__asm__ __volatile__("hlt");`` "__asm__"表示后面的代码为内嵌汇编,"asm"是"__asm_...转载 2019-10-15 09:30:45 · 4726 阅读 · 0 评论 -
5.CAS以及相关的底层实现
前段时间找工作- -,一直没有什么时间写博客,断更了好长时间,不好意思了。1.锁带来的问题 前面在3.Java并发synchronized关键字解析中提到了synchronized实现的原理是通过对象的对象头中的标记来实现的,而且如果出现多线程争夺锁的时候后面还有一些系列的所膨胀的过程。这些过程都是比较消耗性能的。因此可以通过CAS来实现无锁的方式处理并发访问的问题。2.CA...原创 2019-09-27 19:51:20 · 195 阅读 · 0 评论 -
4.Thread线程对象相关的方法和说明
1. 线程的创建 我们在创建一个线程的时候都是这么做的Thread thread = new Thread(() -> { IntStream.range(1, 1000).forEach(item -> System.out.println(Thread.currentThread().getName() + "---->" + it...原创 2019-07-02 17:51:16 · 219 阅读 · 0 评论 -
3.Java并发synchronized关键字解析
对于synchronized关键字,作用应该都知道保证线程之间的同步性。准备从以下几个方面进行讲解。synchronized关键字的用法synchronized关键字不通用法在指令层面的异同点synchronized的实现方式跟锁膨胀1. synchronized关键字的用法 synchronized关键字可以出现在方法签名跟代码块中。可以分为,同步代码块,同步方...原创 2019-06-22 13:52:01 · 135 阅读 · 0 评论 -
2.Java并发volatile关键字的作用和汇编原理
对于volatile关键字,很多人应该都有一个基本的了解和认知。volatile关键字有以下作用 1. 保证了不同线程间的可见性 2. 禁止对指令进行重排序1.高速缓存一致性协议 在了解保证可见性原因之前先了解一下cpu高速缓存一致性协议: 1.当cpu写入数据的时候,如果发现该变量被共享(也就是说,在其他cpu中也存在该变量的副本),会发出一个信号,通知其他CP...原创 2019-06-21 18:03:09 · 478 阅读 · 1 评论 -
1.并发相关的原子性,可见性,顺序一致性,happen-before
在讲解相关的定义之前,先了解一下CPU在读取数据时候的工作顺序。 CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中,可以使得以后对整块数据的读取都从Cache中进行,不必再调用内存。 其中Intel从Pentium开始将Cache分开,通常...原创 2019-06-21 18:02:01 · 278 阅读 · 0 评论