volatile和synchronized的区别

共性

volatile和synchronized 保证多线程数据安全

区别
  1. volatile修饰的变量,jvm每次都从主存(主内存)拿,而不会寄存器(工作内存)读取。
    synchronized 锁住当前变量,同一时刻只能一个线程访问
  2. 作用域,volatile 变量,synchronized变量和方法
  3. volatile 实现变量修改可见性,synchronized 变量可见性和原子性

可见性:一个线程修改,其他线程立刻变量修改后的值
原子性:一个操作要么全做或者不做,比如转账A转B1000,先从A扣款,然后在B账户加1000两个操作不可分割
volatile不阻塞,synchronized阻塞

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容