Java 中的 transient 和 volatile 之间有什么区别?


transient:局部变量标记为 transient,以指示 JVM 在序列化包含该变量的对象时跳过该特定变量。 此修饰符包含在创建该变量的语句中,位于变量的类或数据类型的前面。

示例

public transient int limit = 55;   // will not persist
public int b;   // will persist

volatile:volatile 修饰符用来告知 JVM 访问该变量的线程必须始终将自身变量的私有副本与内存中的主副本合并。

访问 volatile 变量会使主内存中变量所有缓存的副本同步。volatile 只能应用于类型为对象或私有的实例变量。volatile 对象引用可以为 null。

示例

public class MyRunnable implements Runnable {
   private volatile boolean active;
   public void run() {
      active = true;
      while (active) {    
      }
   }
   public void stop() {
      active = false;  
   }
}

更新于: 2020-02-26

626 浏览

开启你的 职业生涯

完成课程获得认证

开始吧
广告