Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以获取Java SE 9及后续版本中更新的语言特性的摘要。
请参阅JDK发行说明以获取所有JDK版本的新功能、增强功能和已删除或不推荐使用的选项的信息。
在并发编程中,有两种基本的执行单元:进程和线程。在Java编程语言中,并发编程主要涉及线程。然而,进程也很重要。
计算机系统通常有许多活动的进程和线程。即使在只有一个执行核心的系统中,这也是真实的,因此在任何给定的时刻只有一个线程实际上在执行。单个核心的处理时间通过一个名为时间片的操作系统功能在进程和线程之间共享。
越来越多的计算机系统具有多个处理器或具有多个执行核心的处理器。这极大地增强了系统并发执行进程和线程的能力 - 但即使在没有多个处理器或执行核心的简单系统上也可能存在并发。
进程具有一个自包含的执行环境。进程通常具有完整的、私有的基本运行时资源集;特别地,每个进程都有自己的内存空间。
进程通常被视为程序或应用程序的同义词。然而,用户所看到的单个应用程序实际上可能是一组协作的进程。为了促进进程之间的通信,大多数操作系统都支持进程间通信(IPC)资源,如管道和套接字。IPC不仅用于同一系统上的进程之间的通信,还用于不同系统上的进程之间的通信。
Java虚拟机的大多数实现作为单个进程运行。Java应用程序可以使用ProcessBuilder
对象创建其他进程。多进程应用程序超出了本课程的范围。
线程有时被称为轻量级进程。进程和线程都提供执行环境,但创建一个新线程所需的资源比创建一个新进程少。
线程存在于一个进程中 - 每个进程至少有一个线程。线程共享进程的资源,包括内存和打开的文件。这样做可以实现高效的但潜在有问题的通信。
多线程执行是Java平台的一个重要特性。每个应用程序至少有一个线程 - 或者如果计算"系统"线程像内存管理和信号处理一样做事情,可能有几个线程。但从应用程序程序员的角度来看,你从一个线程开始,称为主线程。该线程具有创建其他线程的能力,我们将在下一节中演示。