java-并发-进程和线程
浏览以下内容前,请点击并阅读 声明
软件的并发是指同时做多件事情,java平台一开始就支持并发编程,java编程语言以及类库含有对并发最基本的支持,从5.0版本开始,java平台开始包含一些高并发的API,包含在java.util.concurrenct包中。
进程和线程
当前的编程语言中有两种基本的执行单元:进程和线程。java语言的并发变成主要涉及线程,然而进程也很重要。
计算机系统通常有多个活动的线程和进程,虽然系统中通常只有单个执行核心,在某一个很短的时间段内实际上只有一个线程在执行,单个执行核心的执行时间是由多个进程和线程根据操作系统特性轮流分享的,这又叫切片(slicing)。如今的计算机越来越趋向于多个处理器或者单个处理器中含有多个执行核心,这极大增强了系统并发执行进程和线程的能力。
进程
一个进程有自身包含的执行环境,一个进程通常含有完整私有的一套运行时资源,特别是每个进程都有自己的内存空间。
进程的概念通常被视为程序或者应用的同义词,然而通常用户所用到的单个应用可能含有多个协调运行的进程,为了使不同的进程之间能够进行通信,大部分操作系统都支持进程间通信(IPC),比如pipe和socket,进程间通信不仅仅是在同一个系统中的进程之间进行,还可以在不同系统之间进行。
大部分java虚拟机的实现是在单个进程上运行的,一个java程序可以用ProcessBuilder创建一个新的进程。
线程
线程有时叫做轻量级的进程,线程和进程都提供了一个执行环境,但是创建一个进程比创建一个线程需要花费的资源更多。
线程存在于一个进程之中,每个进程至少有一个线程,线程共享进程的资源,包括内存和打开的文件,这样便于高效的通信,却也存在一些问题。
多线程执行是java平台的一个重要特征,每个程序含有至少一个线程,如果算上内存管理和信号处理的”系统“线程。但从程序员的角度来说,一开始只有一个线程,叫做主线程,主线程可以创建额外的线程。