本文翻译自Oracle Java Document Concurrency篇
原文链接如下:https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html
进程和线程
在并发编程领域,有两个很重要的基本执行单位:进程(Process)和线程(Thread)。在JAVA编程语言中,并发编程一般与多线程有关。但是进程也同样重要。
一般的,一个电脑系统有很多活动的进程和线程。即使这个电脑只有一个CPU核,也是如此,虽然同一时刻只有一个线程真实地在执行。通过OS的一个特征:时间分片,单核CPU的运行时间被进程和线程们共享。
现在电脑有多个CPU或单个CPU有很多核心的情况变得越来越正常。这大大加强了系统的并发处理能力。但对单核的系统,并发也是有可能的。
进程
进程是一个完整的自我执行环境。一个进程一般拥有一套完整且私有的运行时环境;具体来说,每个线程都有自己独立的内存空间。
进程经常被看作是程序或应用的同义词。但其实,用户认为的一个应用,常常是由多个合作进程组成的。为了便利进程之间的通信,很多操作系统都支持跨进程交流(Inter Process Communication, IPC)的资源,比如管道(Pipes)和插座(Sockets)。IPC不仅能用在同一个系统中两个进程的交互过程,也能在两个不同系统的进程之间进行交互。
大部分JVM的实现是作为一个进程运行。一个JAVA应用可以通过ProcessBuilder对象建立新的额外进程。多进程的应用超出了本课程的范围。
线程
线程,有时候被称作轻量级的进程。进程和线程都提供了一个执行环境,但创建一个线程,比创建进程,需要更少的资源。
线程在进程中存在——每个进程都至少有一个线程。线程共享该进程的资源,包括内存和打开的文件。这促成了有效率、但也有潜在问题的通讯方式。
多线程执行是JAVA平台的一个重要特征。每个应用都至少有一个线程,如果你把系统线程算在里面的话,有很多个。不过从应用开发者的角度,最开始就只有一个线程,被称为main线程。这个线程有能力新建其他线程,我们会在之后的文章中讲到。
网友评论