[面试题]synchronized和volatile的区别

1年前更新 biumall.com站长 178
共计 206 个字符,预计 1 分钟能阅读完成
  1. 作用范围

    volatile仅作用于变量;synchronized不仅作用于变量,方法,还有类。

  2. 是否原子性

    volatile可以改变变量可见性,但不保证原子性;而synchronized不仅改变变量可见性,还保证原子性。

  3. 是否线程阻塞

    volatile不会造成线程阻塞;synchronized可能造成线程阻塞。

  4. 是否被编译器优化

    volatile标记变量不会被编译器优化;synchronized标记的变量可以被编译器优化。