一.进程和线程
1)概念区别
进程:正在进行的程序【代码块】,操作系统会为正在运行的程序分配内存空间
线程:本质就是一条执行路径,可以理解为是进程的子任务【迅雷、百度网盘多资源下载】, 一个进程可以只包含一个线程,也可以包含多个线程
2)问题:默认java虚拟机进程开辟了几条线程?
答:至少有两条线程,主线程[main方法],垃圾回收线程[GC守护线程]
三.多进程和多线程
1)概念区别
多进程:在操作系统的层面上,同时运行多个程序
多线程:在同一进程的层面上,同时运行多条程序
2)开启多线程和开启多进程的好处?
多进程的好处: 提高了CPU的使用率
多线程的好处: 提高了进程的使用率,从而提高了CPU的使用率
3)为什么需要多线程?
-
- 防止线程阻塞,提高用户体验
-
- 能够提高程序的执行效率
-
- 为了能够让多个任务看起来像是”同时执行”
四.多线程执行原理
- 1.上下文切换: 在多个线程之间切换执行,称为上下文切换
- 2.在Java中,CPU采用抢占式【随机性】调度模型获取CPU的资源
- 3.CPU在某一个时间刻度上只能够执行一个进程的一个线程的一条原子性语句
-
注意: 原子性语句: 不可再分割的语句
- 4.CPU执行速度非常快,在上下文切换的过程我们肉眼无法察觉,
- 所以开启多个线程本质上并不能够提高系统的执行速度,反而会降低速度
- 但是合理地开辟多线程,可以提高CPU的使用率,也可以提高进程的效率
五.重要的概念
1.并行和并发
并发:在同一个时间段[可以分割的时间]可以同时执行[单核处理器]
并行:在同一时间刻度[不可再分割的时间单位]可以同时执行[多核处理器]
高并发:线程数量很大
2.同步和异步:
同步:按照顺序依次执行每一个任务,不会出现线程安全问题
异步:可以同时执行多个任务,相互之间互不影响,例如ajax请求
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2338.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...