Why do we use volatile and transient keyword in Java?

1) transient keyword is used along with instance variables to exclude them from serialization process. If a field is transient its value will not be persisted. On the other hand, volatile keyword is used to mark a Java variable as “being stored in main memory”.

What is the purpose of volatile keyword in Java?

Volatile keyword is used to modify the value of a variable by different threads. It is also used to make classes thread safe. It means that multiple threads can use a method and instance of the classes at the same time without any problem. The volatile keyword can be used either with primitive type or objects.

What is volatile and transient in Java?

The volatile keyword flushes the changes directly to the main memory instead of the CPU cache. … On the other hand, the transient keyword is used during serialization. Fields that are marked as transient can not be part of the serialization and deserialization.

IT IS IMPORTANT:  Quick Answer: How are heap provided by SQL?

What is the difference between transient and volatile?

In this article, we will see the difference between the keywords volatile and transient.


Transient Volatile
It cannot be used with the static keyword as static variable do not belong to individual instance. During serialization, only object’s current state is concerned. It can be used with the static keyword.

What is the need of transient code with example?

The transient keyword can be used with the data members of a class in order to avoid their serialization. For example, if a program accepts a user’s login details and password. But we don’t want to store the original password in the file.

What is the use of transient keyword?

The transient keyword in Java is used to avoid serialization. If any object of a data structure is defined as a transient , then it will not be serialized. Serialization is the ​process of converting an object into a byte stream.

When should volatile be used?

A variable should be declared volatile whenever its value could change unexpectedly. In practice, only three types of variables could change: Memory-mapped peripheral registers. Global variables modified by an interrupt service routine.

Why volatile is used in Singleton?

The volatile prevents memory writes from being re-ordered, making it impossible for other threads to read uninitialized fields of your singleton through the singleton’s pointer.

Is volatile synchronized?

If a variable is declared as volatile as for every thread JVM will create a separate local copy.


Synchronized Volatile Atomic
1.It is applicable to only blocks or methods. 1.It is applicable to variables only. 1.It is also applicable to variables only.
IT IS IMPORTANT:  Best answer: Which package contains IOException in Java?

What is difference between volatile and atomic variables Java?

Volatile and Atomic are two different concepts. Volatile ensures, that a certain, expected (memory) state is true across different threads, while Atomics ensure that operation on variables are performed atomically.

Can volatile variable be serialized?

2 Answers. A volatile is typically serialized by Java Object Serialization. The threading / JMM properties of volatile are orthogonal to serialization. Incidentally, it is possible to serialize a transient or static variable, if you code custom writeObject / readObject methods to do this.

Is transient variable thread safe in Java?

Access to volatile int in Java will be thread-safe.

What is serializing and Deserializing?

Serialization is the process of converting an object into a stream of bytes to store the object or transmit it to memory, a database, or a file. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.

Can we serialize transient in Java?

A transient variable is a variable that can not be serialized. According to Java Language Specification [jls-8.3. 1.3] – “Variables may be marked transient to indicate that they are not part of the persistent state of an object.”

Can we serialize static variables in Java?

In Java, serialization is a concept using which we can write the state of an object into a byte stream so that we can transfer it over the network (using technologies like JPA and RMI). But, static variables belong to class therefore, you cannot serialize static variables in Java.

IT IS IMPORTANT:  Best answer: What is concatenation in Java?

Why do we need serialization in Java?

In Java, we create several objects that live and die accordingly, and every object will certainly die when the JVM dies. … Well, serialization allows us to convert the state of an object into a byte stream, which then can be saved into a file on the local disk or sent over the network to any other machine.