What is the difference between transient and volatile in Java?


transient: An instance variable is marked transient to indicate the JVM to skip the particular variable when serializing the object containing it.  This modifier is included in the statement that creates the variable, preceding the class or data type of the variable.

Example

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

volatile: The volatile modifier is used to let the JVM know that a thread accessing the variable must always merge its own private copy of the variable with the master copy in the memory.

Accessing a volatile variable synchronizes all the cached copied of the variables in the main memory. Volatile can only be applied to instance variables, which are of type object or private. A volatile object reference can be null.

Example

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

Rishi Raj
Rishi Raj

I am a coder

Updated on: 26-Feb-2020

483 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements