Multithreading in Java allows executing multiple threads simultaneously. A thread is the smallest unit of processing and threads are lightweight sub-processes that are independent. If an exception occurs in one thread, it does not affect other threads. There are five states in the lifecycle of a thread: new, runnable, running, non-runnable (blocked), and terminated. Threads can be created by extending the Thread class or implementing the Runnable interface.