volatile关键字分析


  1. volatile是一个轻量级的同步机制。不会阻塞线程。
    • 保证可见性(被volatile关键字修饰的变量 一个线程修改后的值,所有线程都可见。)
    • 不保证原子性(原子性:一个操作或者指令、事务,需要整体的执行成功,要么整体的失败。不能被分割。)
    • 禁止指令重排
  2. 与synchronized的区别:
    • volatile没有synchronized使用的广泛,但是比synchronized轻量级。
    • synchronized既能保证可见性,又能保证原子性,而volatile只能保证可见性,无法保证原子性.
    • volatile关键字主要用于解决变量在多个线程之间的可见性,而 synchronized 关键字解决的是多个线程之间访问资源的同步性。
  3. 从内存可见性角度看,volatile读相当于加锁,volatile写相当于解锁。

相关