目录
1. 进程与线程
1.1. 进程-概念
进程:一个进程就是一个程序的实例,程序有指令和数据组成,程序运行时会将指令加载到CPU,将数据加载到内存,同时还会加载磁盘,网络等设备,进程就是用来加载指令,管理内存,管理IO的
程序启动时相当于开启了一个进程实例,这时从磁盘中加载这个程序的代码至内存,由进程管理程序的运行.大部分程序是单实例进程,也就是说只能开启一个进程(网易云,微信等),也有一部分是多实例进程(网页等)
1.2. 线程-概念
线程:一个线程就是一个指令流,由CPU运行一条条指令流,一个进程中有一到多个线程
Java中,进程是最小资源分配单位,线程是最小调用单位.
Windows中,进程是不活动的,只是线程的容器
1.3. 进程与线程-对比
- 进程之间相互独立,线程之间共享由进程的内存资源
- 进程通信复杂,同一台计算机通信称为IPC,不同计算机之间通信需要通过网络协议(HTTP),线程通信相对简单,它们共享进程内的内存资源(多个线程可以访问同一个共享变量)
- 进程上下文切换消耗资源多,线程轻量级资源消耗少
1.4. 并发与并行
1.4.1. 并发-概念
并发:一段时间轮流做多件事情的能力.单核CPU下,任务调度器将CPU时间片轮流分给不同的线程使用,每次切换的时间很短,人类感觉不出来
1.4.2. 并行-概念
并行:同一时间做多件事情的能力.多核CPU下,任务调度器将多个CPU时间片分给多个线程去使用
1.5. 同步与异步
1.5.1. 同步-概念
同步:按顺序执行方法并等待返回结果后才能继续运行
1.5.2. 异步-概念
异步:不按顺序执行方法,不需要等待返回结果就可以运行
异步设计:多线程运行可以让方法调用变为异步,比如读取文件或视频这些大数据时可以开启新的线程去完成,避免阻塞主线程的运行
1.6. CPU核数和多线程
- 单核CPU:多个线程不能时机提高程序运行效率,只是在不同任务之间切换,轮流使用CPU,不至于被一个线程堵死
- 多核CPU:多个线程可以提高运行效率,因为是多个线程并行运行,不过也要分情况
- 被精心设计拆分过的任务,并行执行可以提高执行效率
- 如果任务的目的不同,拆分和效率也没意义,比如任务一需要等待任务二的结果就不能拆分