In concurrent programming, there are two basic units of execution: processes and threads. In the Java programming language, concurrent programming is mostly concerned with threads. However, processes are also important.html
A computer system normally has many active processes and threads. This is true even in systems that only have a single execution core, and thus only have one thread actually executing at any given moment. Processing time for a single core is shared among processes and threads through an OS feature called time slicing.java
It's becoming more and more common for computer systems to have multiple processors or processors with multiple execution cores. This greatly enhances a system's capacity for concurrent execution of processes and threads — but concurrency is possible even on simple systems, without multiple processors or execution cores.api
A process has a self-contained execution environment. A process generally has a complete, private set of basic run-time resources; in particular, each process has its own memory space.多線程
一個進程有本身獨立運行的環境和資源。oracle
Processes are often seen as synonymous with programs or applications. However, what the user sees as a single application may in fact be a set of cooperating processes. To facilitate communication between processes, most operating systems support Inter Process Communication (IPC) resources, such as pipes and sockets. IPC is used not just for communication between processes on the same system, but processes on different systems.app
一個進程經常被當作爲一個應用程序,可是事實上一個應用會有好多個進程,而且進程之間是能夠經過IPC進行通訊的。less
Most implementations of the Java virtual machine run as a single process. A Java application can create additional processes using aProcessBuilder
object. Multiprocess applications are beyond the scope of this lesson.socket
Threads are sometimes called lightweight processes. Both processes and threads provide an execution environment, but creating a new thread requires fewer resources than creating a new process.ide
線程一般被看爲一個輕量級的進程,進程和線程都有一個運行的環境,可是創建一個線程須要的資源更少。oop
Threads exist within a process — every process has at least one. Threads share the process's resources, including memory and open files. This makes for efficient, but potentially problematic, communication.
線程是依賴進程而存活的,因此一個進程至少有一個線程,線程之間共享進程的資源,包含內存等,這樣更有效率可是卻也潛伏着問題。
Multithreaded execution is an essential feature of the Java platform. Every application has at least one thread — or several, if you count "system" threads that do things like memory management and signal handling. But from the application programmer's point of view, you start with just one thread, called the main thread. This thread has the ability to create additional threads, as we'll demonstrate in the next section.
多線程執行是JAVA平臺運行的基本特徵。