volatile和synchronized的区别

共性

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

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

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

你可能感兴趣的:(volatile和synchronized的区别)