Threads are supported by various components of the Java development environment, and it can be hard to find the features that you need. This section summarizes where in the Java environment you can find various classes, methods, and language features that participate in the Java threads story. In the Java development enviroment, threads are objects that derive from java.lang's Thread class. The Thread class defines and implements Java threads. You can subclass the Thread class to provide your own thread implementations or you can use the Runnable interface.
All threads belong to a thread group, which typically contains related threads.
The ThreadGroup class in the java.lang package implements groups of threads. Rarely, a thread might need to catch ThreadDeath to clean up before it dies. Both of these language features help ensure the integrity of data that is shared between two concurrently running threads. Multithreaded Programs discusses thread synchronization issues. The Java runtime system contains the scheduler, which is responsible for running all the existing threads.