概述
关键字出现的原因
在核心部件的CPU处理的数据,想要进去CPU,需要通过内存,高速缓冲器,寄存器。java多线程运算变量值的时候,需要把值从主存拿到线程的工作内存中,其中一个线程计算完结果后,CPU首先把运算结果存放到寄存器中,但是还没刷新到主存的时候,这时别的线程从主存中取到的是以前的值,这样就会出现读错数据也就是所谓的脏读。
JVM运行的时候,每个线程都有自己的线程栈,不同线程运行的时候,都需要复制主存的一份副本到主存。为了保证每个线程拿到的数据是最新的,这时就需要同步机制。
关键字synchronized
大部分都会想到一个解决线程同步的方法,就是让共享变量在同一时刻只允许一个线程操作。这样保证了所有线程要么拿不到值,要么拿到的是纯粹的。这种思想就是synchronized,用来告诉虚拟机,这个区域只能一个线程来操作。相当于一把锁,必须拿到锁才能进入,其他人要想进来必须等待。Java中的锁,可以是this对象、方法、类、也可以是声明的某个变量。锁的范围,可以是小块代码段,也可以是整个方法区,甚至是所有的方法。锁和锁的范围是两个维度的事情。虚拟机会在锁和线程之间建立联系,其他线程跑到锁对象时候,会识别出别的线程已经上锁了。
关键字volatile
很多时候,我们不关心共享值在被谁操作,只关心当前这个值到底是什么,有了volatile,就一句话说,保证可见性,不保证原子性。volatile关键字使一个变量在多个线程可见,但是不能保证多个线程共同修改变量时所带来的数据不一致性的
最后
以上就是闪闪羽毛为你收集整理的JAVA多线程的关键字的全部内容,希望文章能够帮你解决JAVA多线程的关键字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复