Java-volatile关键字。

  • 定义:Java中的1个关键字/修饰符。
  • 作用:保证被volatile修饰的共享变量的可见性&有序性,但不保证原子性。

 

volatile关键字和synchronized的对比:

  1. volatile关键字是线程同步的轻量实现,所以volatile关键字性能比synchronized好(第3点是原因之一)。
  2. volatile只能修饰变量,synchronized可以修饰方法,代码块。
  3. volatile不会阻塞线程,synchronized会阻塞线程。
  4. volatile能保证数据的可见性,不保证原子性,synchronized可以保证原子性,间接保证了可见性,他会将公共内存和私有内存的数据做同步处理。
  5. volatile解决的是变量在多个线程之间的可见性,synchronized解决的是多个线程之间访问的同步性。

volatile修饰的属性保证每次读取都能读到最新的值,但是不会更新已经读了的值。

总结:Java的同步机制都是围绕两点:原子性,线程之间的可见性。只有满足了这两点才能称得上是同步的。Java中的synchronized和volatile两个关键字分别执行的是原子性和线程之间的可见性。

你可能感兴趣的:(java基础)