在并发程序设计中,有两个基本的单位:进程和线程。并发程序设计主要是针对线程而言,当然,进程也是非常重要的。
操作系统包含很多进程与线程。即使在单核系统中(systems that only have a single execution core)也是这样的,因此,单核系统实际上只有一个线程在运行,通过时间片来实现线程并发。
随着科技的发展,多处理器系统或多核处理器系统变得越来越普通,这使得系统处理并发的能力得到了很大的提升,当然,在单处理器单核系统也会有并发的情况。

进程:
每个进程都有用独立的执行环境。每个进程都拥有私有的、完整的运行资源集(尤其是私有的内存空间)。
有人通常把一个应用看成一个进程,应用准确来说应该是多个协作的进程的集合。大多数系统都支持进程通讯(IPC: inter process communication),如通过管道(pipe)或套接字(socket)等方式。IPC不仅能实现系统内部进程的通讯,也能实现系统间进程的通讯。
java虚拟机运行时候大多数时候只有一个单一的进程,你也可以通过ProcessBuilder建立新的进程。

线程:
线程又被称为轻量级进程(lightweight processes)。进程和线程头提供了执行环境,但是建立一个线程消耗的资源要比建立一个进程少。
线程运行与进程内部,每个进程至少有一个线程。线程之间共享所属进程的资源,包括内存、文件等。这使得程序运行更高效,单页存在很多潜在的问题。
多线程是java的基本特性,而从一个开发者角度出发,每个java项目启动时候只有一个线程,即主线程。通过主线程再建立新的线程。