The
transient and volatile Modifiers
Java defines two interesting
type modifiers: transient and volatile. These modifiers are used to
handle somewhat specialized situations.
When an instance variable is
declared as transient, then its
value need not persist when an object is stored. For example:
class T {
transient int a; // will not persist
int b; // will persist
}
Here, if an object of type T is written to a persistent storage
area, the contents of a would not be
saved, but the contents of b would.
The volatile modifier tells the compiler that the variable modified by volatile can be changed unexpectedly by
other parts of your program. One of these situations involves multithreaded
programs. In a multithreaded program, sometimes two or more threads share the
same variable. For efficiency considerations, each thread can keep its own,
private copy of such a shared variable. The real (or master) copy of the variable is updated at various times, such as
when a synchronized method is
entered. While this approach works fine, it may be inefficient at times. In
some cases, all that really matters is that the master copy of a variable
always reflects its current state. To ensure this, simply specify the variable
as volatile, which tells the
compiler that it must always use the master copy of a volatile variable (or, at least, always keep any private copies
up-to-date with the master copy, and vice versa). Also, accesses to the master
variable must be executed in the precise order in which they are executed on
any private copy.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2024 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.