Process. A process is a running program (a process resides in memory).
It is an independent unit for the system to perform resource allocation and scheduling.
Each process has its own storage space and system resources.
Note: The memory of process A and process B is independent and not shared.
Thread. A thread is a single sequential control flow in a process, which can also be understood as an execution path.
Single-threaded: A process contains a sequential control flow (one execution path).
Multithreading: A process contains multiple sequential control flows (multiple execution paths).
In the J**A language: thread A and thread b, heap memory and method area memory sharing. But the stack memory is independent, one thread and one stack.
Suppose 10 threads are started, there will be 10 stacks, and each stack and each stack do not interfere with each other, and each executes its own, which is multi-threaded concurrency.
The reason for the multi-threading mechanism in J**A is to improve the processing efficiency of the program.
For a single-core CPU, it is not possible to achieve true multi-threaded concurrency, but it can give people a feeling of "multi-threaded concurrency". For a single-core CPU, it can actually only process one thing at a certain point in time, but due to the extremely fast processing speed of the CPU, multiple threads frequently switch between executions, and people feel that multiple things are being done at the same time.