Java provides built-in support for multithreaded programming. A multithreaded program will have 2 or more parts that can run concurrently. Each part of such a program in java is called a thread, and each thread defines a separate path of execution. It is a specialized form of multitasking. There are two distinct types of multitasking namely Process-based and Thread-based.