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 瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始吧
廣告
© . All rights reserved.