Write code to define, instantiate, and start new threads using both java.lang.Thread and java.lang.Runnable. Recognize conditions that might prevent a thread from executing. Write code using synchronized, wait(), notify(), and notifyAll() to protect against concurrent access problems and to communicate between threads. Define the interaction among threads and object locks when executing synchronized wait(), notify(), or notifyAll().
|