多线程的概念

1 引入多线程的目的

Java特性之一就是支持多线程,引用多线程的目的充分利用cpu资源。

2 概念

理发这件事需要洗剪吹几个过程。

  • 理发就是一个进程,他包含了理发的完整的过程。
  • 而洗、剪、吹都是线程,用来执行理发这个进程的不同部分
  • 洗剪吹三个线程可以共享进程所拥有的全部资源,比如椅子,镜子,吹风机等

在这里插入图片描述

2.1 程序

程序是为完成特点任务,用某种语言编写的一组指令的集合,即代码的集合。

2.2 进程

进程是指程序的一次动态执行过程,每个程序都对应着一个进程。一个进程包含了从代码加载到执行完成的一个完整过程,进程是操作系统资源分配的最小单元

2.3 线程

  • 线程是进程中执行运算的最小单位,是被系统独立调度和分派的基本单位。每个进程至少拥有一个线程,反过来一个线程只能属于一个进程。同属于一个进程的线程可以共享进程所拥有的全部资源

  • 一个线程可以创建和撤销另一个线程,同一进程下的多个线程可以并发执行。

  • 线程可以对进程的所有资源进行调度和运算。

  • 线程既可以由操作系统内核来控制调度,也可以由用户程序进行控制调度。

优点:

  1. 易于调度
  2. 提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分
  3. 开销少。创建线程比创建进程要快,所以开销少
  4. 利于充分发挥多处理器的功能。通过创建多线程的进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

2.4 简单理解:程序、进程、线程

  • 打开腾讯会议,就是开了一个进程。
  • 腾讯会议这个进程里,传输声音是一个线程,录制视频是一个线程,输入文字是一个线程。也就是说多个线程做的多个工作,组成一个完整的进程。
  • 进程就是正在执行的程序。

2.5 进程与线程的区别

在这里插入图片描述

2.6 串行、并行与并发

串行:多个任务,执行时一个执行完再执行另一个

并发: 是指一个或若干个CPU对多个进程和线程之间进行多路复用,即CPU轮着执行多个任务,每个任务都执行一小段时间,从宏观上看起来就像是全部任务都在同时执行一样。

并行: 则是指多个进程或线程同一时刻被执行,这是真正意义上的同时执行,它必须要有多个CPU支持。

在这里插入图片描述

如上图,对于并发来说,线程一线执行一段时间,然后线程二再执行一段时间,接着线程三再执行一段时间。每个线程都轮流得到CPU的执行时间,这种情况下只需要一个CPU即能够实现。

对于并行来说,线程一、线程二和线程三是同时执行的,这种情况下需要三个CPU才能实现。并发和并行都提升了CPU的资源利用率

在这里插入图片描述

3 什么时候用到多线程?

  • 高并发。系统接受实现多用户多请求的高并发时,通过多线程来实现。

  • 线程后台处理大任务。一个程序是线性执行的。如果程序执行到要花大量时间处理的任务时,那主程序就得等待其执行完才能继续执行下面的。那么用户就不得不等待它执行完。

    这时候可以开线程把花大量时间处理的任务放在线程处理,这样线程在后台处理时,主程序也可以继续执行下去,用户就不需要等待。线程执行完后执行回调函数

  • 大任务。大任务处理起来比较耗时,这时候可以用多个线程并行来加快处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值