What is the difference between transient and volatile in Java?

Java 8Object Oriented ProgrammingProgramming

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.


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.


public class MyRunnable implements Runnable {
   private volatile boolean active;
   public void run() {
      active = true;
      while (active) {    
   public void stop() {
      active = false;  
Updated on 26-Feb-2020 10:11:11