No credit card required
4.1 Write code to define, instantiate, and start new threads using both java.lang.Thread and java.lang.Runnable.
4.2 Recognize the states in which a thread can exist, and identify ways in which a thread can transition from one state to another.
4.3 Given a scenario, write code that makes appropriate use of object locking to protect static or instance variables from concurrent access problems.
4.4 Given a scenario, write code that makes appropriate use of wait, notify, or notifyAll.
• Recognize conditions that might prevent a thread from executing.
• Write code to start and stop a thread.
• Understand aspects of thread behavior that are not guaranteed.