Threads are the most basic element of the Java Concurrency API. Every Java program has at least one thread that executes the main() method, which, in turn, starts the execution of the application. When you launch a new Thread class, it's executed in parallel with the other threads of the application and with the other processes on an operating system. There is a critical difference between process and thread. A process is an instance of an application that is running (for example, you're editing a document in a text processor). This process has one or more threads that execute the tasks that make the process. You can be running more than one process of the same application, for example, two instances of the text processor. Threads inside a process share the memory while processes of the same OS don't.
All the kinds of Java tasks that you can execute (Runnable, Callable, or...