文章目录
- 进程和线程
- 进程
- 线程
进程和线程
进程–>正在运行的程序,可能对应一个或多个进程, 拥有一些资源:内存、CPU
进程之间可以通信:管道、信号量、共享存储、socket 消息队列等
线程–>执行指令的集合,一个进程可能对应一个或多个线程, 使用或者共享所在进程的资源
线程之间通信:管道、同步、wait notify,信号量等
进程
进程:进程指正在运行的程序,进程拥有一个完整的、私有的基本运行资源集合。通常,每个进程都有自己的内存空间。
进程往往被看作是程序或应用的代名词,然而,用户看到的一个单独的应用程序实际上可能是一组相互协作的进程集合。
为了便于进程之间的通信,大多数操作系统都支持进程间通信(IPC),如pipes 和sockets。IPC不仅支持同一系统上的通信,也支持不同的系统。IPC通信方式包括管道(包括无名管道和命名管道)、
消息队列、信号量、共享存储、Socket、Streams等方式,其中 Socket和Streams支持不同主机上的
两个进程IPC。
线程
线程有时也被称为轻量级的进程。进程和线程都提供了一个执行环境,但创建一个新的线程比创建一个新的进程需要的资源要少。
线程是在进程中存在的 — 每个进程最少有一个线程。线程共享进程的资源,包括内存和打开的文件。
这样提高了效率,但潜在的问题就是线程间的通信。
多线程的执行是Java平台的一个基本特征。每个应用都至少有一个线程 – 或几个,如果算上“系统”线程的话,比如内存管理和信号处理等。但是从程序员的角度来看,启动的只有一个线程,叫主线程。
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程。