When such a program instantiates another thread there are two of them running, the second one reporting to the first. As you might imagine, you are certainly not limited to two threads either. In fact you can have as many threads as your CPU can manage. Each thread can perform its own tasks independently, sharing the resources of the main thread . That last idea is crucial.
All threads share the same global variables and methods.
Thus, if one thread changes the color of a Label to green, then all threads are effected. The fact that threads can affect the same properties of course, means that you must be very careful as to how those resources are shared. If this were to happen, your data would be corrupted. However, when locking data, you must make sure that you do not create a deadlock situation in which two objects enter an endless loop because a thread calls another thread within a locked area and the second thread needs to get at the locked data. Finally, Java allows you to set various levels of priority to multiple threads such that some gain more CPU time than others.