juc
文章平均质量分 85
BBOY-ALEX
Java向我在召唤
展开
-
三、深入理解synchronized分析
1.了解java对象的存储结构在学习synchronized 之前我们需要先了解一下 java对象包含了什么?如下图所示:对象头mark word:主要用来标识对象的线程锁状态,另外可以配合GC、存放该对象的hashcodeklass word:记录用于标识对象指向方法区中class信息的指针数组长度:只有当对象是数组的时候才会有这部分对象体对象体是用于保存对象属性和值的部分对齐字节对齐跟数据在内存中的位置有关,需要字节对齐的根本原因在于CPU访问数据的效率问原创 2021-11-03 21:19:29 · 118 阅读 · 0 评论 -
二、并发编程的三大特性
可见性(visibility)申明的变量会放在内存中,一个线程更改之后,之前获取值的线程是对这个变量不可见的volatile 可以保证变量的可见性,引用类型(包括数组)只能保证本身的可见性,不能保证内部字段的可见性数据的读取顺序是从cpu的计算机单元寄存器->L1 -> L2 -> L3 ->内存,最终在各个阶段存储一份对于线程的可见性是值得L1,L2,L3的可见性cpu多级缓存如下图所示:缓存一致性协议 MESI Cache| 状态 | 描述原创 2021-10-27 22:55:53 · 181 阅读 · 0 评论 -
一、多线程基础知识
程序、进程、线程、纤程● 什么是程序○ 可执行文件,例如(QQ.EXE)● 什么是进程○ 进程是资源的分配的基本单位● 什么是线程○ 线程是调度执行的基本单位○ 多个线程共享同一个进程的资源○ 线程的切换是需要消耗资源的● 什么是协程/纤程○ 是一种最轻量化的线程(lightweight threads)。它是一种用户线程(user thread),让应用程序可以独立决定自己的线程要如何运作。操作系统内核不能看见它,也不会为它进行调度。就像一般的线程,纤程有自己的寻址空间。但是纤程采取合原创 2021-10-25 23:33:16 · 280 阅读 · 0 评论