Chapter 6. Advanced Synchronization Topics
In this chapter, we look at some of the more advanced issues related
to data synchronization梥pecifically, timing issues related to
data synchronization. When you write a Java program that makes use of
several threads, issues related to data synchronization are those
most likely to create difficulties in the design of the program, and
errors in data synchronization are often the most difficult to detect
since they depend on events happening in a specific order. Often an
error in data synchronization can be masked in the code by timing
dependencies. You may notice some sort of data corruption in a normal
run of your program, but when you run the program in a debugger or
add some debugging statements to the code, the timing of the program
is completely changed, and the data synchronization error no longer
occurs.
These issues can't be simply solved. Instead,
developers need to design their programs with these issues in mind.
Developers need to understand what the different threading issues
are: what are the causes, what they should look for, and the
techniques they should use to avoid and mitigate them. Developers
should also consider using higher-level synchronization
tools梩ools that provide the type of synchronization needed by
the program and that are known to be threadsafe. We examine both of
these ideas in this chapter.
|