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.