译者:本人没过四级,完全依赖翻译软件和想象力翻译,所以还请对照着原文阅读。
官方地址:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html
计算机用户理所当然的认为他们的系统可以同时做很多事。他们认为他们可以在使用文字处理的同时,下载文件,管理打印队列,播放音频。即使是一个单独的应用也经常被希望同时做很多事情。例如,声音播放应用必须同时读出网络上的数字音频、解压、管理回放和更新显示。还有文本处理器也应该随时准备响应键盘事件和鼠标事件,不管它多么忙的在格式化文本和更新显示。这样的软件叫并发软件。
Java平台从设计初始就是支持并发编程的,在java语言和类库中包括了对基础并发的支持。自5.0之后,java开始包含了高级并发API。这个教程介绍了java平台的基本并发支持,概述java.util.concurrent包中的一些高级API。
一、进程和线程
在并发编程中,有两个基本执行单元:进程和线程。在java程序语言中,并发编程主要与线程有关。然而,进程也是重要的。
一个计算机系统通常有很多活动的进程和线程。 在只有一个处理核心的系统上,在任何时间都只执行一个线程。被分配到进程和线程之间的处理时间叫做时间截分。
越来越过的计算机拥有多个处理器或者一个处理器多个执行核心。这很大的提升了进程和线程的并发处理能力---但是,在没有多个处理器的系统上并发也是可以的。
(一) 进程
一个进程与一个自我独立的执行环境。一个进程一般有一个完整的、私有的基本运行时资源集合,尤其是每个进程拥有自己的内存空间。
进程经常被看做是一个程序或者应用的同义词。然而,用户看到的应用实际上可能是一个进程协作的集合。为了是进程之间通信,大多数操作系统支持IPC(Inter Process Communication),例如管道和套接字。IPC 只是用在同一个系统上的进程间通信,但不支持不同系统。
大多数java虚拟机实现作为一个单独进程运行。一个java应用可以创建附加进程使用ProcessBuilder对象。多进程应用超出了本教程的范围。
(二) 线程
线程有时叫做轻量级进程。进程和线程都由一个执行环境。但是创建线程比创建进程需要更少的资源。
线程存在于进程之内,--每个进程至少一个。线程分享进程的资源,包括内存和打开的文件。这使得它高效,但是有有问题,通信。
多线程执行是java平台的一个基本功能。每个应用至少有一个线程-或者几个,如果你数一下内存管理和信号处理之类的系统线程。但是应用程序员的角度,你只启动了一个线程,叫做主线程。这个线程能过创建附加线程,我们将在下一段演示。