多线程
文章平均质量分 50
jhh_seven
念念不忘,必有回响!
展开
-
CAS
CAS的全称为Compare-And-Swap,它是一条CPU并发原语 功能:判断内存中某个位置的值是否为预期值,如果是则更改为最新值,这个过程是原子的。 CAS并发原语体现:JAVA语言中就是sun.misc.Unsafe类中的各个方法。调用Unsafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过他实现原子操作。再次强调由于CAS是一种系统原语,原语属于操作系统范畴,是由若干指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不可被中断原创 2021-04-26 16:11:41 · 88 阅读 · 0 评论 -
volatile保证可见性、不保证原子性、禁止指令重排代码
1.JVM:java虚拟机 2.JMM:java内存模型 由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称之为栈空间),工作内存是每个线程的私有数据区域,而java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值等)必须在工作内存中艰辛,**首先将变量拷贝到自己的工作内存空间,然后对变量进行操作,操作完成线程后将变量写回主内存,不能直接操作主内存中的变量,**各个线程中的工作内存中存储着主内存中的变量拷贝副原创 2021-04-26 08:46:09 · 132 阅读 · 0 评论 -
并发和并行的通俗理解
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。 (不一定是同时的) 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。 并发的关键是你有处理多个任务的能力,不一定要同时。 并行的关键是你有同时处理多个任务的能力。 所以我认为它们最关键的点就是:是否是**『同时』**。 并发是轮流处理多个任务,并行是同时处理多个任务 ...原创 2021-04-17 18:23:31 · 123 阅读 · 0 评论