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 can also be used in variables to
indicate compiler and JVM that always read its value from main memory and follow
happens-before relationship on visibility of volatile variable among multiple
thread.
2) transient keyword can not be used along with static keyword but
volatile can be used along with static.
3) transient variables are initialized with default value during
de-serialization and there assignment or restoration of value has to be handled
by application code.