Synchronized之原子性、可见性、有序性

Synchronized与原子性
原子性是指一个操作是不可中断的,要全部执行完成,要不都不执行。
在Java中为了保证原子性,提供了两个高级的字节码指令moniterenter和moniterexit。这两个码指令,在Java对应的关键字是Synchronized。
线程1在执行moniterenter指令的时候,会对Monitor进行加锁,加锁后其它线程无法获得锁,除非线程1主动解锁。即使在执行过程中,由于某种原因,比如CPU时间片用完,线程1放弃了CPU,但是,他并没有进行解锁。而由于Synchronized的锁是可重入的,下一个时间片还是只能被他自己获取到,还是会继续执行代码,直到所有代码执行完,这就保证了原子性。

Synchronized与可见性
可见性是指多个线程访问同一个变量时,一个线程修改了这个变量的值,其它线程能够立即看到修改的值。
Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存保存了该线程需用变量主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读

Synchronized之原子性、可见性、有序性最先出现在Python成神之路

版权声明:
作者:cc
链接:https://www.techfm.club/p/7825.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>