Multithreading in Java allows simultaneous execution of program parts, maximizing CPU time with lightweight threads that share memory. Threads can exist in various states such as new, runnable, blocked, and terminated, while multithreading is a form of multitasking specifically involving multiple threads. Threads can be created by extending the Thread class or implementing the Runnable interface, with priorities influencing their execution order.