All tasks must implement the run() method, whether they are a subclass of Thread or implement the Runnable interface.
getLabel() and setLabel().
Synchronized methods are methods that are used to control access to an object. A thread only executes a synchronized method after it has acquired the lock for the method's object or class.
Synchronized statements are similar to synchronized methods. A synchronized statement can only be executed after a thread has acquired the lock for the object or class referenced in the synchronized statement.
A thread class may be declared as a subclass of Thread, or it may implement the Runnable interface.