参考
http://www.07net01.com/program/2016/02/1310964.html
原文
http://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html
进程 和 线程
在并发编程中,存在2个基本执行单元--进程和线程。在Java编程语言里面,并发编程主要地是关心/涉及到线程。但是,进程也很重要。
常规来讲,一个计算机系统有许多活动进程和线程。甚至针对仅仅只有一个执行CPU核的系统,也是成立的,因此这些系统在任何一个特定的时刻,仅仅只有一个线程实际地在运行。单核的处理时间通过操作系统的时间分片的特征在多个进程和线程之间进行共享。
计算机系统拥有多个单核处理器,拥有多个带多执行核的处理器,正变得越来越常见。针对进程和线程的并发执行,这极大地提高了系统的能力;但是,甚至简单的系统没有多个单核处理器,或者没有多个带多执行核的处理器,也可能出现并发。
进程
一个进程有一个独立自足的运行环境;通常有一个完整的私有的基本运行时资源集合;特别地,每个进程有自己的内存空间。
进程常常被看作程序或者应用的同义词。但是,用户看见的单应用,实际上也可能是协同操作的进程集合。为了使进程之间的通讯更加容易,大部分操作系统支持内部进程通讯资源,比如管道和套接字。IPC不仅用于同一个系统里面的进程之间的通讯,也可以用于不同系统的进程之间的通讯。
Java虚拟机的大部分实现都作为单进程而运行。一个Java应用使用ProcessBuilder对象可以创建额外的进程。多进程应用超出了本课程的范围。
线程
有时把线程称作轻量级进程。进程和线程都规定自己的执行环境,但是,创建一个新的线程所需的资源开销要低于创建一个新的进程。
多个线程存在于同一个进程---每个进程至少有一个线程。线程共享这个进程的资源,包括内存和打开的文件。这促成了高效的通讯,但导致了潜在的问题。
多线程执行是Java平台的一个本质特色。每个应用至少有一个线程---有多个,如果您统计系统线程,比如负责内存管理和信号处理。从应用编程人员的视角,你从仅仅一个main线程作为开始。这个main线程有能力去创建额外的线程,在下一节我们将展示。