Multithreading allows a program to execute multiple tasks concurrently by using threads. There are two types of threads: single threads where a program uses one thread, and multiple threads where a program uses more than one thread concurrently. The life cycle of a thread involves different states such as newborn, runnable, running, blocked, and dead. Common thread methods include start(), run(), yield(), sleep(), wait(), notify(), and stop().