多线程(一)程序,进程,线程的区别与联系
程序、进程、线程的概念
程序是指令的有序集合,被存储在磁盘或其他的数据存储设备中,是一个静态概念,其本身没有任何运行的含义。
进程是指一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统运行程序的基本单位,因此进程是动态的。
线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
程序与进程的区别:
- 程序是指令的有序集合,是一个静态概念,其本身没有任何运行的含义。而进程是程序在处理机(电脑)上的一次执行过程,是动态的概念。
- 程序可以作为一种软件资料长期保存,而进程则是有一定生命周期的,它能够动态的产生和消亡。
- 进程是一个能独立运行的单位,能与其他进程并行活动。
- 进程是竞争计算机系统有限资源的基本单位,也是进行处理机调度的基本单位。程序无此该概念。
- 进程与程序之间无一一对应关系。不同的进程可以包含同一程序,同一程序在执行中也可以产生多个进程。
- 程序是记录在介质上指令的有序集合,而进程则由程序、数据和进程控制块3部分组成。
线程与进程的区别:
- 通常在一个进程中可以包含若干个线程,一个进程中至少有一个线程,线程是进程的子集。
- 线程是进程的一条执行路径。
- 进程是系统运行程序的基本单位,线程是CPU调度和执行的单位。
- 进程在执行过程中拥有独立的内存单元,不同的进程使用不同的内存空间,而一个进程中的多个线程共享一片相同的内存空间。
- 很多多线程是模拟出来的,真正的多线程是指有多个CPU(多核),一般多少个CPU就可以同时执行多少个线程。如果是模拟出来的多线程,即在一个CPU(单核)的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。
对Java线程的认识
- 在程序运行时,即使没有自己创建多线程,后台也会有多个线程,如主线程,gc线程;
- main()称之为主线程,为系统的入口,用于执行整个程序。
- 在一个进程中,如果开辟了多个线程,线程的执行顺序由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为的干预。
- 对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制。
- 线程会带来额外的开销,如cpu调度时间,并发控制开销。每个线程在自己的工作内存交互,内存控制不当会造成数据不一致。
这部分关于多线程的面试题:
1、什么是线程?
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支 持,它也是一个很好的卖点。
2、进程,线程之间有什么区别?
进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位。同一进程中的多个线程之间可以并发执行。
多线程(一)程序,进程,线程的区别与联系相关推荐
- php多线程模型,PHP进程模型、进程通讯方式、进程线程的区别分别有哪些?
PHP进程模型是一个正在执行的程序,可以分配给处理器并由处理器执行的一个实体:PHP进程通讯方式有管道及有名管道,信号,共享内存等:PHP进程线程的区别有进程是资源的分配和调度的一个独立单元,而线程是 ...
- 02 线程简介 多任务 多线程 普通方法调用和多线程 程序.进程.线程 Proces与Thread 核心概念
线程简介 任务,进程,线程,多线程 多任务 多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务 多线程 原来是一条路,慢慢因为车太多了,道路堵塞,效率极低. 为了提高使用的 ...
- CPU核心数线程数、程序进程线程、并发并行的简单理解
CPU核心数线程数.程序进程线程.并发并行.简单理解和区分 这篇文章是对上述感念的简单理解,想深入研究可以看看<计算机组成原理> CPU的核心数 线程数 当我们买电脑的时候,会看到CPU的 ...
- php进程通讯方式,PHP进程模型、进程通讯方式、进程线程的区别分别有哪些?
PHP进程模型是一个正在执行的程序,可以分配给处理器并由处理器执行的一个实体:PHP进程通讯方式有管道及有名管道,信号,共享内存等:PHP进程线程的区别有进程是资源的分配和调度的一个独立单元,而线程是 ...
- Vue Router路由模式的区别 进程线程的区别
Vue Router hash模式和history模式的区别 hash模式url里面永远带着#号,我们在开发当中默认就是hash模式. 那么什么时候需要用到history模式呢? 肯定是用户觉得#号太 ...
- linux 程序 进程 线程的关系
程序 定义:通常为二进制文件存放在存储媒介中(硬盘,光驱,软盘等),已物理文件的形式存在. 启动程序,通常要运行某个文件,这个文件就是程序,程序其实是存放在磁盘中的一个二进制文件. 进程 程序被触发后 ...
- java8多线程运行程序_线程,代码和数据–多线程Java程序实际运行的方式
java8多线程运行程序 有些事情是您在学术或培训班上没有学到的,经过几年的工作经验后才逐渐了解,然后才意识到,这是非常基本的事情,我为什么错过了这么多年. 了解多线程Java程序的执行方式就是其中之 ...
- CPU核心数线程数、程序进程线程、并发并行
核心数(物理概念) 8核:有8个相对独立的CPU核心单元组,这是物理概念,也就是说1个CPU有 8个独立的小CPU,物理上只能同时处理8个任务,也就是物理上是8核8线程. 线程数(逻辑概念) 既然物理 ...
- 程序-进程-线程 ( 多线程 )
1.程序 (program) 是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态的对象. 2.进程 (process) 是程序的一次执行过程,或是正在运行的一个程序.动态过程: ...
- 20140625 程序 进程 线程 物理存储器
1.程序 .exe就是一个程序 2.进程 运行一个.exe的可执行程序后,就启动了该程序的一个实例,我们称之为"进程".是资源申请,调度和独立运行的单位,使用系统的运行资源 3.线 ...
最新文章
- Jzoj3806 小X 的道路修建
- OpenGL之glMatrixMode函数的用法
- 对四象限法则的一点思考
- 两道与二进制有关的sequence
- Linux yum 报错:One of the configured repositories failed (Unknown), and yum doesn't have.
- 如何快速找出找出两个数组中的_找出JavaScript中两个数组之间的差异
- django的页面报错中出现xxxx.html (Skipped)
- AT4502-[AGC029C]Lexicographic constraints【二分,栈】
- 《搜索算法——DFS、BFS、回溯》
- 互联网日报 | 7月19日 星期一 | 美团外卖成立骑手服务部;金山办公发布“文档中台”;一汽-大众奥迪在华销量突破700万辆...
- 带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用
- qt 进度条最小_QT:圆形进度条设计
- 由echarts想到的js中的时间类型
- 摊牌了,国内首个三维重建系列视频课程,涉及SFM、多视图几何、结构光、单目深度估计等...
- jQuery入门第二章(显示隐藏动画)
- 【数字电子技术 Digital Electronic Technology 4】——门电路笔记 之 TTL门电路详细剖析
- Linux 中的 owner,group,others
- 如何通俗易懂地阐述机器学习?
- “有钱了”的理想汽车,能否拿下自动驾驶赛道入场券?
- 微软亚洲研究院开发的对对联软件