Section 7: Threads ( Chapter 9 )

  • 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.

Study Notes

Both java.lang.Thread and java.lang.Runnable can be used to create new threads. A thread can exist in one of several states. Various method calls and events may cause a thread to go from one state to another. Several conditions may prevent a thread from executing.

Most questions related to thread control concern using and implementing threads (through the Thread class or Runnable interface) and the use of the notify() and wait() methods. A good understanding of object locks and synchronized code is required. Note the difference between the notify() and notifyAll() methods.