In modern computers, processors with several cores are usually found, so it seems plausible that several such strands can work independently of each other. However, you by no means need a separate processor core for each strand. Even computers with only one processor core can simulate a simultaneity by quickly switching back and forth between the strings, which does not exist in reality. For the user, however, this is not recognizable.
In programming, a thread of action is called a thread. If we work with several such threads, we speak of multithreading.
Java is a programming language that supports multithreading. This means that a process (application) can be divided into different parts. These subtasks can be processed “in parallel” by different threads. In terms of content, individual threads are a sequential sequence of instructions. Viewed as a whole, however, they run “parallel” to other threads.
Concurrency is one way to increase performance. In Java this can be achieved very easily, since threads are very well integrated into the language.