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 年 2 月 26 日

630 次浏览

启动你的 职业

完成课程即可获得认证

开始
广告
© . All rights reserved.