Multithreading allows multiple tasks in a program to run concurrently. In Java, multithreading is built-in and threads provide the mechanism for running tasks simultaneously. A thread represents the flow of execution of a task. Threads have lifecycles including new, runnable, running, waiting, and dead states. There are two ways to create threads in Java: by extending the Thread class and overriding the run method, or by implementing the Runnable interface.