线程基础及理解

一、 相关概念的区分

简单而言,一个应用程序就是一个进程,而线程是一个进程内部的多个运行单位。我们可以流畅的点击软件或者游戏中的各种按钮,其实,这个底层就是基于多线程的应用。UI界面的主线程是绘制界面,如果有一个耗时的操作发生则启动新的线程,完全不影响主线程的工作。当这个线程工作完毕后,再更新到主界面上。

1.什么是程序

程序是一个静态的概念,对应操作系统中一个可执行的文件,比如网易云音乐是一个程序,我们点击,启动。加载程序到内存中,开始执行,就产生了进程。

我们电脑上运行的一个个软件就是程序,比如像QQ、微信、Java编程用的eclipse、画图板、五子棋……等等程序都是由算法、数据、代码、资源文件……等组成的;用官方语言来说,是一组运行于电子计算机上的,计算机能识别和执行的指令,并且所有的程序都是存储在计算机的磁盘上的。

2.什么是进程

把电脑上的程序运行起来后,就是一个进程,要注意的是,在一个操作系统中,所能开启的进程是有限的,而并非是无止境的,进程运行完毕后储存在内存中。在面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式(堆栈)的描述,进程是程序的实体。

每个进程由3部分组成:cpu、data、code。每个进程都是独立的,保有自己的cpu时间,代码和数据,即便用同一份程序产生好几个进程,它们之间还是拥有自己的这3样东西,这样的缺点是:浪费内存,cpu的负担较重。

多任务(Multitasking)操作系统将CPU时间动态地划分给每个进程,操作系统同时执行多个进程,每个进程独立运行。以进程的观点来看,它会以为自己独占CPU的使用权。

3.什么是线程

线程是进程中的一个独立运行的单位,各个线程之间互不影响、独立进行。我们打个比方,让线程控制一段代码的执行,可以是事情,可以是任务,但是这一段代码执行完毕后,线程的运行就会结束。补充一下,线程是在CPU上执行的。

使用多线程的目的就是,最大限度的利用硬件资源来提升程序的执行效率,但也仅限于最大限度的利用,而不是无止境的使用,在一个进程中不能同时开启N个线程,因为计算机的硬件资源会限制执行效率。在你的进程中,同时会有多个独立的运行单位(即线程),这进程就是一个多线程的进程(即程序)。

4.线程和进程的关系

一个进程可以产生多个线程。同多个进程可以共享操作系统的某些资源一样,同一进程的多个线程也可以共享此进程的某些资源(比如:代码、数据),所以线程又被称为轻量级进程。

线程可以看成是轻量级的进程,属于同一进程的线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。

线程和进程最根本的区别在于:进程是资源分配的单位,线程是调度和执行的单位

多进程: 在操作系统中能同时运行多个任务(程序)。
多线程: 在同一应用程序中有多个顺序流同时执行。

系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,除了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。

5.线程的联合join

线程A在运行期间,可以调用线程B的join()方法,让线程B和线程A联合。这样,线程A就必须等待线程B执行完毕后,才能继续执行。如下面示例中,“爸爸线程”要抽烟,于是联合了“儿子线程”去买烟,必须等待“儿子线程”买烟完毕,“爸爸线程”才能继续抽烟。

6.生命周期

因此总结,线程的生命周期就是:新生,就绪,运行,阻塞,死亡的整个过程。感受一下,线程在现实生活中最像什么?很显然,因为他有有限的生命周期,因此更像人类。那么,线程的执行需要消耗掉哪些硬件资源呢?一共消耗掉三种资源:

1.CUP,主要是用来运行线程;
2.高速缓存,用来缓存线程运行时所需的数据 ;
3.内存,用来储存数据的;

打一个很形象的比方,如果人是线程,那么CPU就是一条街道,街上可以同时有多个人在走动。我们在买电脑时,总会看他的CPU是多少核的是多少线程的,这个意思就是,你的电脑上能同时运行多少个线程。
在这里插入图片描述
这个就是在任务管理器中的线程运行的界面,可以看到计算机的CPU在运行很多个进程,也在同时运行很多条线程,这个就是我们所讲的进程和线程的关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值