Which of the following statements are true?

 
1. The wait(), notify(), and notifyAll() methods
   must be executed in synchronized code.
2. The wait method defined in the Thread class,
   can be used to convert a thread from Running state
   to Waiting state.
3. The notify() and notifyAll() methods can be used
   to signal and move waiting threads to ready-to-run state.
4. The Thread class is an abstract class.

The first 3 statements are true. The 4th statement is not true.